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

时间:2016-05-25 14:02:20

标签: c# sharepoint sharepoint-2013 web-parts datacontext

我使用以下代码创建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 个答案:

答案 0 :(得分:1)

通过检查断点,写入日志或检查服务器的审计跟踪/日志(IIS / SharePoint)来检查您实际连接的帐户 - 您确定它是有效帐户而不是IUSR_xyz IIS帐户或类似那?如果您正在使用分布式体系结构,请检查您是否未访问Kerberos "double hop"。在向混音中添加其他服务器/服务时,这通常会让您失望。

答案 1 :(得分:1)

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

  • 匿名身份验证 - 已禁用
  • ASPNET模拟 - 已禁用
  • Windows身份验证 - 已启用

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

答案 2 :(得分:1)

最后原因是:

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

enter image description here