【发布时间】:2019-10-16 22:52:50
【问题描述】:
我想创建一个 IIS 网络服务,它必须将列表项写入 SharePoint on Premise。
我想使用 CSOM 并尝试创建一个 ClientContext。
public string AddListItem()
string result = string.Empty;
string siteUrl = "https://serverUrl";
using (ClientContext context = new ClientContext(siteUrl))
{
context.Credentials = new NetworkCredential("User", "Password", "Domain");
List list = context.Web.Lists.GetByTitle("Test");
context.Load(list);
context.ExecuteQuery();
}
return result;
}
执行时,context.ExecuteQuery(); 出现错误
System.Net.WebException: '远程服务器返回错误:(500) 内部服务器错误。'
在事件日志中,我看到以下错误:
WebHost 未能处理请求。 发件人信息:System.ServiceModel.ServiceHostingEnvironment+HostingManager/41028758 异常:System.ServiceModel.ServiceActivationException:由于编译期间出现异常,无法激活服务“/_vti_bin/client.svc”。异常消息是:由于对象的当前状态,操作无效。 ---> System.InvalidOperationException:由于对象的当前状态,操作无效。 在 Microsoft.SharePoint.Administration.SPWebApplication.get_Context() ....................
在调试中,我还看到在创建 ClientContext 之后和之前 context.ExecuteQuery(); ClientContext 的某些属性出现以下错误,例如:
ServerLibraryVersion = 'context.ServerLibraryVersion' 引发了“Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException”类型的异常
【问题讨论】:
-
可能是 SharePoint Online 的一些安全问题。尝试在创建
clientcontext后添加下一行ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;并将NetworkCredential替换为SharePointOnlineCredentials
标签: c# wcf sharepoint