我正在使用以下代码创建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的一些附加信息:
首先,启用所有身份验证方法,然后我尝试关闭基本和摘要身份验证以查看它是否有帮助,但异常仍然会抛出 .
那么如何解决这个问题?
3 回答
通过检查断点,写入日志或检查服务器's audit trail/Logs (IIS/SharePoint) - are you sure it'是有效帐户而不是IUSR_xyz IIS帐户或类似的东西来检查您实际连接的帐户?如果您正在使用分布式体系结构,请检查您是否没有按Kerberos "double hop" . 在向混音中添加其他服务器/服务时,这通常会让您失望 .
为了使其工作,您应该在IIS中配置
Authentication
选项,如下所示:匿名身份验证 - DISABLED
ASPNET模拟 - DISABLED
Windows身份验证 - ENABLED
您可以使用
CredentialCache.DefaultCredentials
,但我建议从使用WCF服务切换到使用CSOM(Microsoft.SharePoint.Client) .最后原因是:
我在类库中没有System.Web程序集,因此系统无法获取CredentialCache.DefaultCredentials .