【问题标题】:Setting SharePointOnlineCredentials - catastrophic failure - COMException设置 SharePointOnlineCredentials - 灾难性故障 - COMException
【发布时间】:2013-09-03 23:47:18
【问题描述】:

我在 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 的行(上面的 sn-p 中倒数第二个)抛出 COMException。

异常详情:

消息:{“灾难性故障(HRESULT 异常:0x8000FFFF (E_UNEXPECTED))”}

来源“Microsoft.SharePoint.Client.Runtime”

HResult/ErrorCode -2147418113

StackTrace 在 Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.EnsureInited() 在 Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.LogonIdentity(字符串用户名,SecureString 密码) 在 Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor(字符串用户名,SecureString 密码) 在 download.aspx.cs:line 104 中的 PivotServer.Download.SaveDownloadListItem() 处

我已经为这两个项目匹配了 web.config 文件,它们包含相同的条目。一个相关的线程建议将应用程序池标识设置为“本地系统”,这没有任何区别。

在此先感谢,非常感谢任何建议、建议、代码示例。

【问题讨论】:

    标签: sharepoint-2013 credentials comexception


    【解决方案1】:

    我收到此错误消息,结果发现 ScanSafe 阻止了 bin 文件,因此我们无法访问登录所需的 http://clientconfig.microsoftonline-p.net/ppcrlconfig600.bin

    一旦我们更新了设置以允许下载二进制文件,它就解决了错误。

    【讨论】:

      【解决方案2】:

      今天我遇到了同样的问题,它发生在一个 azure web 角色上。 将 Web 角色部署到 azure 后我做了什么:

      1. 通过 rdp 连接到 Web 角色服务器。
      2. 安装 SharePoint 客户端组件 SDK
      3. 转到 IIS 管理器
      4. 将应用程序池标识更改为本地管理员(我创建的用于登录 Web 角色服务器的帐户)

      【讨论】:

      • 这并不是真正需要的,而且可能不是一个好主意,因为 Web 角色实例可以随时重新启动,并且您的手动步骤不会通过包完成。您只需更改您的 azure ServiceConfiguration.cscfg 文件即可将 Web 角色设置为使用提升的权限执行。此外,SharePoint DLL(Microsoft.SharePoint.Client 和 .Runtime.dll)应添加为对您的角色项目的引用,其中 CopyLocal = true。这样您就无需在服务器上安装客户端 SDK。
      【解决方案3】:

      我遇到了同样的问题,并尝试了上述所有方法,但没有运气。原来是我的杀毒软件 Bitdefender 2013。当我禁用扫描仪时,它起作用了。

      【讨论】:

        【解决方案4】:

        我也有同样的例外。要解决它:

        使用您将在应用(或应用池)中使用的帐户连接到 IE 中的 http://login.microsoftonline.com,并从页面安装证书。

        它解决了我的问题。

        希望能提供帮助。

        【讨论】:

          【解决方案5】:

          我有同样的错误,以前的答案都没有解决这个问题。我最终去了 IIS 管理器中的站点应用程序并在高级设置下设置物理路径凭据。

          【讨论】:

            【解决方案6】:

            在我设置 Internet 安全设置后它得到了解决。转到 Internet 选项 -> 安全 -> Internet -> 自定义级别 -> 启用 .Net Framework 和其他一些 activex 控件。

            【讨论】:

              猜你喜欢
              • 2010-12-04
              • 2016-03-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-06-21
              • 2020-03-18
              相关资源
              最近更新 更多