首页 文章

401使用DataContext在Sharepoint Webpart上抛出未经授权的异常

提问于
浏览
1

我正在使用以下代码创建Sharepoint datacontext的新实例:

spDataContext con = new spDataContext(new Uri("http://mysite/subsite/_vti_bin/ListData.svc"));
con.Credentials = CredentialCache.DefaultCredentials;

然后我尝试使用获取项目

var result = con.testingList.ToList();

然后下面的错误显示:

“401 UNAUTHORIZED”

这是错误的屏幕截图:

enter image description here

但是,如果我通过提供sharepoint管理员用户名和密码来更改凭据,我就可以获取这些项目 .

con.Credentials = new NetworkCredential(username, password);

但问题是:我想使用当前用户的凭据而不是管理员帐户,因为当前用户不应该看到所有项目 .

来自IIS的一些附加信息:

enter image description here

首先,启用所有身份验证方法,然后我尝试关闭基本和摘要身份验证以查看它是否有帮助,但异常仍然会抛出 .

那么如何解决这个问题?

3 回答

  • 1

    通过检查断点,写入日志或检查服务器's audit trail/Logs (IIS/SharePoint) - are you sure it'是有效帐户而不是IUSR_xyz IIS帐户或类似的东西来检查您实际连接的帐户?如果您正在使用分布式体系结构,请检查您是否没有按Kerberos "double hop" . 在向混音中添加其他服务器/服务时,这通常会让您失望 .

  • 1

    为了使其工作,您应该在IIS中配置 Authentication 选项,如下所示:

    • 匿名身份验证 - DISABLED

    • ASPNET模拟 - DISABLED

    • Windows身份验证 - ENABLED

    您可以使用 CredentialCache.DefaultCredentials ,但我建议从使用WCF服务切换到使用CSOM(Microsoft.SharePoint.Client) .

  • 1

    最后原因是:

    我在类库中没有System.Web程序集,因此系统无法获取CredentialCache.DefaultCredentials .

    enter image description here

相关问题