[英]Authentication Error when accessing Sharepoint list via web service
几个月前我写了一个Windows服务,它将使用_vti_bin / lists.asmx函数GetListItemChanges ping一个Sharepoint列表。 几周前,当我的公司将Sharepoint实例升级到SP1时,它工作正常。
现在,只要我的服务尝试访问Sharepoint,我就会收到401.1身份验证错误:
错误:
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面。
请尝试以下操作:如果您认为应该能够查看此目录或页面,请与网站管理员联系。
HTTP错误401.1 - 未经授权:由于凭据无效,访问被拒绝。
Internet信息服务(IIS)
我已经检查过,我在网站上的权限没有改变。 这是我在其中调用列表的代码:
Lists listsService = new Lists();
listsService.Credentials = new NetworkCredential("UserName", "Password", "domain");
Result = listsService.GetListItemChanges("List name", null, dTime.ToString(), null);
我还注意到,我们的服务器场可能已禁用基本身份验证。 我不相信我正在使用它,但我可能弄错了。
根据提供的信息,我怀疑这是一个编程错误。 您是否可以访问托管SharePoint站点的服务器上的IIS管理器界面? 如果是,请检查允许的有效身份验证技术。 是否允许匿名连接? Windows集成验证是否已启用? HTTP Basic身份验证? 向您的基础架构/ SharePoint人员询问双跳(代理)的可能性。 如果是这样,那也可能有用,但设置很麻烦(Kerberos委派)。 NetworkCredentials类似乎支持IIS支持的所有标准身份验证方案(表单除外):
http://msdn.microsoft.com/en-us/library/system.net.networkcredential(VS.80).aspx
您可能需要让基础架构人员为SharePoint Web前端设置SPN:
http://support.microsoft.com/kb/929650
但是,我建议不要通过IIS管理器更改任何内容。 让SharePoint管理员通过SharePoint管理中心对网站允许的身份验证技术进行更改。
问候,山姆
我刚刚发现了一个非常类似的问题并通过MS知识库文章解决了它: http : //support.microsoft.com/kb/896861
你应该尝试的是这个:
方法2:禁用环回检查请按照下列步骤操作:
- 单击“开始”,单击“运行”,键入regedit,然后单击“确定”。
- 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Control \\ Lsa
- 用鼠标右键单击Lsa,指向新建,然后单击DWORD值。
- 键入DisableLoopbackCheck,然后按ENTER键。
- 右键单击“DisableLoopbackCheck”,然后单击“修改”。
- 在“数值数据”框中,键入1,然后单击“确定”。
- 退出注册表编辑器,然后重新启动计算机。
这解决了我所拥有的环境中的所有常规解决方案(对Web服务调用添加凭据)失败的相同问题。
你的内部网络上有代理吗?
我正在考虑双跳,而Basic Auth不容易这样,但NTLM是。 如果您有代理,那么双跳是一个问题。 如果您直接访问计算机并且只能计算一跳(服务到Web服务),那么这应该不是问题。
假设它不是SSL或基本/ Windows身份验证问题,那么我打赌这个
要测试登录到本地服务器并尝试浏览您的站点。 如果你不能使用上面给出的用户名/密码成功浏览,但你可以从远程电脑上找到这个文章。
当您浏览使用集成身份验证并在IIS 5.1或IIS 6上承载的网站时,您会收到错误401.1
http://support.microsoft.com/default.aspx?scid=kb;en-us;896861
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.