如何通过.NET Core控制台或Web API使用CSOM在SharePoint Online列表创建项
问题解答
完全可以通过CSOM在.NET Core控制台应用或者Web API中向SharePoint Online列表创建列表项,微软已经推出了原生适配.NET Core/.NET 5+的CSOM版本,可直接使用。
实现前提
- 你需要拥有对应SharePoint Online站点的写入权限,至少要具备目标列表的「编辑」权限
- 开发环境安装有.NET Core 3.1及以上版本SDK
具体实现步骤
步骤1:安装适配.NET Core的CSOM NuGet包
打开项目的NuGet包管理器,搜索安装Microsoft.SharePointOnline.CSOM,选择16.0.23311.12000及以上版本即可支持.NET Core。也可以直接在NuGet包管理控制台执行命令:Install-Package Microsoft.SharePointOnline.CSOM -Version 16.0.23804.12000
步骤2:准备身份验证信息
SharePoint Online默认禁用传统用户名密码验证,推荐使用Azure AD客户端凭证模式完成验证,这是.NET Core场景下最稳定的验证方案:
- 在Azure AD中注册一个应用,为该应用授予SharePoint API的
Sites.ReadWrite.All应用权限(不要选委托权限),并完成管理员同意 - 记录该应用的客户端ID、客户端密钥,以及目标SharePoint站点的完整URL、目标列表的显示名称
步骤3:编写创建列表项的核心代码
以下代码在.NET Core控制台和Web API中通用:
using Microsoft.SharePoint.Client; using System; // 替换为你自己的配置参数 string siteUrl = "https://你的租户名.sharepoint.com/sites/目标站点名"; string clientId = "Azure AD应用的客户端ID"; string clientSecret = "Azure AD应用的客户端密钥"; string targetListName = "目标列表的显示名称"; using (var context = new ClientContext(siteUrl)) { // 身份验证 context.Credentials = new SharePointOnlineCredentials(clientId, clientSecret); // 获取目标列表 List targetList = context.Web.Lists.GetByTitle(targetListName); // 初始化新列表项 ListItemCreationInformation createInfo = new ListItemCreationInformation(); ListItem newItem = targetList.AddItem(createInfo); // 为列表项字段赋值,注意要使用字段的内部名而非显示名 newItem["Title"] = "测试列表项标题"; newItem["自定义字段内部名"] = "自定义字段值"; // 数字字段赋值示例:newItem["Age"] = 28; // 日期字段赋值示例:newItem["StartDate"] = DateTime.Now; // 提交保存 newItem.Update(); context.ExecuteQuery(); Console.WriteLine($"列表项创建成功,新项ID为:{newItem.Id}"); }
步骤4:结果验证
运行代码后打开对应SharePoint Online列表,即可看到刚刚创建的列表项。如果执行报错可按以下方向排查:
- 401错误:检查Azure AD应用权限是否配置正确,是否已经完成管理员同意
- 404错误:检查站点URL、列表名称是否填写正确
- 字段赋值错误:检查字段内部名是否正确,值的类型是否和列表字段定义匹配
注意事项
- 生产环境不要硬编码客户端密钥,建议使用.NET Core配置中心、密钥保管工具等安全方式存储敏感信息
- 如果是面向多用户的Web API,可选择委托权限模式,获取当前登录用户的AccessToken传给CSOM,实现按用户权限操作
内容的提问来源于stack exchange,提问作者Deep Ponkiya
相关产品推荐
相关产品推荐

