【问题标题】:Consuming web services with claims-based authentication - SoapServerException使用基于声明的身份验证的 Web 服务 - SoapServerException
【发布时间】:2013-10-24 12:37:14
【问题描述】:

我们有一个应用程序定期从 SharePoint 列表中提取数据并与另一个应用程序集成。我们已经使用它一年多了,没有任何问题。然而,最近,我们将农场切换为使用基于声明的身份验证......然后应用就出现了。

我的代码在高层次上执行以下操作:

SPWebRefs.Lists spl = new SPWebRefs.Lists();
spl.Credentials = System.Net.CredentialCache.DefaultCredentials;

//Build request here


XmlNode listItems = spl.GetListItems("My list", view, query, viewFields, null, queryOptions, null);

我得到一个"Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown" 异常。

我正在查看 Fiddler,我收到了 401 挑战,然后很快收到了 200 响应,我认为这意味着我进入了。但是一旦调用 GetListItems 方法,我就会收到 500 错误。

我已经针对 2010 实例以及我们准备部署的 2013 场进行了尝试。同样的情况。

此时我使用的是 4.0 框架,但我已考虑针对 4.5 框架进行测试,其中包括一些用于声明身份验证的新 API。那会有什么不同吗?

任何想法将不胜感激。提前非常感谢!

【问题讨论】:

    标签: web-services sharepoint soap claims-based-identity


    【解决方案1】:

    您必须首先调用 SharePoint 的身份验证 WebService。你会从中得到一个 cookie,你可以将它传递给 Lists WebService。

    在此处查看示例:http://www.tonytestasworld.com/post/2009/06/04/How-To-Authenticate-and-Use-SharePoint-Web-Services-in-an-FBA-SharePoint-site.aspx

    【讨论】:

    • 谢谢@Doomdrake,我试过了。但是,我在访问 auth webservice 时收到 401 响应(并且凭据是正确的 - 使用域\用户、用户和声明语法域\用户(。另外,您的链接处理 FBA 场景。是否有有什么我遗漏的吗?谢谢!N
    • 你能更新你的代码并标记异常的位置吗? authentication.aspx 服务应该不需要任何身份验证,所以 401 很奇怪。
    • 我从您提供的示例中测试了代码: using (AuthenticationSvc.Authentication authSvc = new AuthenticationSvc.Authentication()) { authSvc.Url = @"https:\\myURLrightHere"; authSvc.CookieContainer = new System.Net.CookieContainer(); authSvc.AllowAutoRedirect = true; AuthenticationSvc.LoginResult 结果 = authSvc.Login("username", "password"); ... } 这就是抛出异常的地方——试图实例化结果。
    • (对那里的单行表示抱歉。似乎无法让它超过一行。:))
    猜你喜欢
    • 2011-03-02
    • 2011-02-07
    • 2015-12-05
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2012-12-07
    相关资源
    最近更新 更多