Несколько месяцев назад я написал службу Windows, которая будет проверять связь со списком Sharepoint с помощью функции GetListItemChanges _vti_bin / lists.asmx. Он работал нормально, пока несколько недель назад моя компания не обновила наш экземпляр Sharepoint до SP1.
.
Теперь всякий раз, когда моя служба пытается получить доступ к Sharepoint, я получаю ошибку аутентификации 401.1:
Ошибка:
You are not authorized to view this page
You do not have permission to view this directory or page using the credentials that you supplied.
Please try the following: Contact the Web site administrator if you believe you should be able to view this directory or page.
HTTP Error 401.1 - Unauthorized: Access is denied due to invalid credentials.
Internet Information Services (IIS)
Я проверил, и мои права на сайте не изменились. вот код, в котором я называю список:
Lists listsService = new Lists();
listsService.Credentials = new NetworkCredential("UserName", "Password", "domain");
Result = listsService.GetListItemChanges("List name", null, dTime.ToString(), null);
Мое внимание также было обращено на то, что базовая аутентификация могла быть отключена на нашей ферме. Не думаю, что использую это, но могу ошибаться.





У вас есть прокси во внутренней сети?
Я думаю о двойном прыжке, и эта базовая аутентификация не подвержена этому, а NTLM - нет. Если у вас есть прокси, то проблема с двойным прыжком. Если вы обращаетесь к машине напрямую и можете считать только один прыжок (от сервиса к веб-сервису), то это не должно быть проблемой.
Предполагая, что это не проблемы с аутентификацией SSL или Basic / Windows, я делаю ставку на это
Для проверки войдите на локальный сервер и попробуйте просмотреть свой сайт. Если вы не можете успешно использовать указанное выше имя пользователя / pwd, но можете с удаленного компьютера, то эта статья для вас.
http://support.microsoft.com/default.aspx?scid=kb;en-us;896861
Основываясь на предоставленной информации, я сомневаюсь, что это ошибка программирования. Можете ли вы получить доступ к интерфейсу диспетчера IIS на сервере, на котором размещен сайт SharePoint? Если да, проверьте допустимые разрешенные технологии аутентификации. Разрешены ли анонимные подключения? Включена ли встроенная проверка подлинности Windows? HTTP Basic auth? Спросите сотрудников вашей инфраструктуры / SharePoint о возможности двойного перехода (прокси). Если да, то это тоже может сработать, но его сложно настроить (делегирование Kerberos). Класс NetworkCredentials, по-видимому, поддерживает все стандартные схемы аутентификации, поддерживаемые IIS (за исключением форм):
http://msdn.microsoft.com/en-us/library/system.net.networkcredential(VS.80).aspx
Возможно, вам потребуется, чтобы специалисты по инфраструктуре установили имена участников-служб для веб-интерфейса SharePoint:
http://support.microsoft.com/kb/929650
Однако я не рекомендую ничего менять через диспетчер IIS. Попросите администратора SharePoint внести изменения в технологии проверки подлинности, разрешенные для сайта, через центр администрирования SharePoint.
С уважением, Сэм
Я только что нашел очень похожую проблему и решил ее благодаря статье MS KB: http://support.microsoft.com/kb/896861
Вот что вам стоит попробовать:
Method 2: Disable the loopback check Follow these steps:
- Click Start, click Run, type regedit, and then click OK.
- In Registry Editor, locate and then click the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
- Right-click Lsa, point to New, and then click DWORD Value.
- Type DisableLoopbackCheck, and then press ENTER.
- Right-click DisableLoopbackCheck, and then click Modify.
- In the Value data box, type 1, and then click OK.
- Quit Registry Editor, and then restart your computer.
Это решило ту же проблему в моей среде, где все обычные решения (добавление учетных данных к вызову веб-службы) терпели неудачу.