几个月前我写了一个Windows服务,它会使用_vti_bin / lists.asmx函数GetListItemChanges来ping一个Sharepoint列表。几周前我的公司将Sharepoint实例升级到SP1时工作正常 现在,只要我的服务尝试访问Sharepoint,我就会收到401.1身份验证错误:
错误:
您无权查看此页面您没有权限 使用您提供的凭据查看此目录或页面。
请 请尝试以下操作:联系Web 网站管理员,如果你相信你 应该能够查看此目录 或页面。
HTTP错误401.1 - 未经授权:由于访问被拒绝 无效证件。
互联网 信息服务(IIS)
我已经检查过,我在网站上的权限没有改变。这是我在其中调用列表的代码:
Lists listsService = new Lists();
listsService.Credentials = new NetworkCredential("UserName", "Password", "domain");
Result = listsService.GetListItemChanges("List name", null, dTime.ToString(), null);
我还注意到,我们的服务器场可能已禁用基本身份验证。我不相信我正在使用它,但我可能弄错了。
答案 0 :(得分:1)
根据提供的信息,我怀疑这是编程错误。您是否可以访问托管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管理中心对网站允许的身份验证技术进行更改。
此致 萨姆
答案 1 :(得分:1)
我刚刚发现了一个非常类似的问题,并且由于MS KB文章解决了这个问题: http://support.microsoft.com/kb/896861
你应该尝试的是这个:
方法2:禁用环回检查 请按照以下步骤操作:
- 单击“开始”,单击“运行”,键入regedit,然后单击“确定”。
- 在注册表编辑器中,找到并单击以下注册表项: HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ LSA
- 右键单击“Lsa”,指向“新建”,然后单击“DWORD值”。
- 键入DisableLoopbackCheck,然后按ENTER键。
- 右键单击“DisableLoopbackCheck”,然后单击“确定” 修改
- 在“数值数据”框中,键入1,然后单击“确定”。
- 退出注册表编辑器,然后重新启动计算机。
醇>
这解决了我所拥有的环境中的所有常规解决方案(向Web服务调用添加凭据)失败的问题。
答案 2 :(得分:0)
您的内部网络是否有代理?
我正在考虑双跳,而Basic Auth不容易这样,但NTLM是。如果您有代理,那么双跳是一个问题。如果您直接访问该计算机并且只能计算一跳(服务到Web服务),那么这应该不是问题。
答案 3 :(得分:0)
假设它不是SSL或基本/ Windows身份验证问题,那么我打赌这个
要测试登录到本地服务器并尝试浏览您的站点。如果您无法使用上面给出的用户名/密码成功浏览,但是您可以从远程PC进行浏览,那么这就是您的文章。
http://support.microsoft.com/default.aspx?scid=kb;en-us;896861