2016-10-14 2 views
0

Пожалуйста, помогите решить проблему. У меня есть приложение. Он вызывает веб-сервис SharePoint List.asmx для получения элементов списка. Вот код:Веб-сервис SharePoint. Ошибка 401: Неавторизованный

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: Unauthorized.

Как я могу решить проблему? Мне действительно нужно развернуть приложение на том же сервере.

+0

ли SharePoint 2010 или SharePoint 2013 или SharePoint O365 ?? – Saratchandra

ответ

0

Немного исследований, и я нашел причину этого. . Framework .Net 3.5 представляет проблему с обратной связью, которая влияет на проверку подлинности веб-сервисов в SharePoint. Эта проблема не позволяет доступ к веб-службам в любом режиме (клиент/инструмент/сервер). Microsoft решила представить это, но, к сожалению, он разбивает несколько разных вещей в SharePoint. Следовательно, запись реестра должна быть создана на серверах веб-интерфейса, чтобы разрешить проблему с обратным контуром.

Внедрение Выполните следующие шаги на каждом из серверов веб-интерфейса SharePoint.

  1. Нажмите кнопку Пуск, выберите пункт Выполнить, введите команду regedit и нажмите кнопку ОК.
  2. В редакторе реестра найдите и выделите следующий раздел реестра: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ LSA
  3. правой кнопкой мыши LSA, выберите пункт Создать, а затем нажмите кнопку Значение типа DWORD.
  4. Тип DisableLoopbackCheck, а затем нажмите ENTER.
  5. Щелкните правой кнопкой мыши DisableLoopbackCheck и выберите команду Изменить.
  6. В поле Значение введите 1 и нажмите кнопку ОК.
  7. Закройте редактор реестра, а затем перезагрузите компьютер.

https://askmanisha.wordpress.com/2014/03/26/401-unauthorized-error-while-calling-a-web-service/