我在 2 个 Web 应用程序项目中使用了以下代码,这两个项目都是同一解决方案的一部分。这两个项目相互交互,一个包含构建 Pivot Viewer 集合(CXML + 图像)的 Web 服务和代码,另一个是托管显示 Pivot Viewer 控件的容器页面的简单 Web 应用程序。
这两个项目需要与包含几个列表的 SharePoint 网站进行交互。这些列表包含用于构建 CXML 集合和记录对集合公开的数据项的访问的数据。以下代码存在于两个项目中。
using SP = Microsoft.SharePoint.Client;
///.......
string siteURL = ConfigurationManager.AppSettings["SharePointURL"];
ClientContext clientContext = new ClientContext(siteURL);
string listName = ConfigurationManager.AppSettings["ListName"];
SP.List downloadRequestList = clientContext.Web.Lists.GetByTitle(listName);
string username = ConfigurationManager.AppSettings.Get("SharePointCredentialUsername");
string userkey = ConfigurationManager.AppSettings.Get("SharePointCredentialPassword");
SecureString securekey = new SecureString();
for (int i = 0; i < userkey.Length; i++)
securekey.AppendChar(userkey[i]);
SharePointOnlineCredentials credentials = new SharePointOnlineCredentials(username, securekey);//error occurs here
clientContext.Credentials = credentials;
代码在一个项目(Web 服务)中执行没有问题,另一个项目(Web 应用程序)在实例化 SharePointOnlineCredentials 的行(上面代码段中从底部倒数第二个)抛出 COMException。
异常详情:
消息:{“灾难性故障(来自 HRESULT 的异常:0x8000FFFF(E_UNEXPECTED))”}
来源 “Microsoft.SharePoint.Client.Runtime”
HResult/ 错误代码 -2147418113
StackTrace 在 Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.EnsureInited() 在 Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.LogonIdentity(String username, SecureString password) 在 Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor(String username, SecureString密码)在 download.aspx.cs:line 104 中的 PivotServer.Download.SaveDownloadListItem()
我已经为这两个项目匹配了 web.config 文件,它们包含相同的条目。一个相关的线程建议将应用程序池标识设置为“本地系统”,这并没有什么不同。
在此先感谢,任何建议、建议、代码示例都非常感谢。