我使用以下代码创建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"
这是错误的屏幕截图:
但如果我通过提供sharepoint管理员用户名和密码来更改凭据,我就可以获取这些项目。
con.Credentials = new NetworkCredential(username, password);
但问题是:我想使用当前用户的凭据而不是管理员帐户,因为当前用户不应该看到所有项目。
来自IIS的一些附加信息:
首先,启用了所有身份验证方法,然后我尝试关闭基本身份验证和摘要身份验证以查看它是否有帮助,但异常仍然会抛出。
那么如何解决这个问题?
答案 0 :(得分:1)
通过检查断点,写入日志或检查服务器的审计跟踪/日志(IIS / SharePoint)来检查您实际连接的帐户 - 您确定它是有效帐户而不是IUSR_xyz IIS帐户或类似那?如果您正在使用分布式体系结构,请检查您是否未访问Kerberos "double hop"。在向混音中添加其他服务器/服务时,这通常会让您失望。
答案 1 :(得分:1)
为了使其正常工作,您应该在IIS中配置Authentication
选项,如下所示:
您可以使用CredentialCache.DefaultCredentials
,但我建议从使用WCF服务切换到使用CSOM(Microsoft.SharePoint.Client)。
答案 2 :(得分:1)