SharePoint Web服务。错误401:未经授权

时间:2016-10-14 03:07:07

标签: web-services sharepoint

请帮助解决问题。 我有申请。它调用SharePoint Web服务List.asmx来获取列表元素。 代码如下:

Lists listService = new Lists();

NetworkCredential credentials = new NetworkCredential();
credentials.UserName = serviceUserName
credentials.Password = servicePassword;
credentials.Domain = domain;

listService.Credentials = credentials; 
listService.Url = serviceUrl.ToString();
XmlDocument xmlDoc = new XmlDocument();
XmlNode nodeListItems = listService.GetListItems(categoryListName.ToString(), null, null, null, "10000", null, null);

凭据用户可以访问列表站点。 如果我在任何服务器上部署应用程序,那都没关系。我得到了List的元素。但是,如果我将应用程序与列表站点部署在同一服务器上,则会收到错误401:未经授权。

我该如何解决这个问题?我真的需要在同一台服务器上部署应用程序。

1 个答案:

答案 0 :(得分:0)

我进行了一些研究,并找到了背后的原因。 .Net 3.5框架引入了一个影响SharePoint中的Web服务身份验证的环回问题。此问题不允许任何模式(客户端/工具/服务器)访问Web服务。微软决定引入这一点,但遗憾的是它在SharePoint中打破了许多不同的东西。 因此,必须在Web前端服务器中创建注册表项以解决回送问题。

实施 在每个SharePoint Web前端服务器上执行以下步骤。

  1. 单击“开始”,单击“运行”,键入regedit,然后单击“确定”。
  2. 在注册表编辑器中,找到并单击以下注册表项: HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ LSA
  3. 右键单击“Lsa”,指向“新建”,然后单击“DWORD值”。
  4. 键入DisableLoopbackCheck,然后按ENTER键。
  5. 右键单击“DisableLoopbackCheck”,然后单击“修改”。
  6. 在“数值数据”框中,键入1,然后单击“确定”。
  7. 退出注册表编辑器,然后重新启动计算机。
  8. https://askmanisha.wordpress.com/2014/03/26/401-unauthorized-error-while-calling-a-web-service/