Я очень раздражен этим за последние 2 часа: (
Люди,
Я пытаюсь получить доступ к веб-службе списка OOTB SharePoint из консольного приложения. Мой сайт SharePoint в IIS установлен в режим встроенной аутентификации Windows, и анонимный доступ отключен.
Теперь на стороне клиента я делаю следующее:
try
{
BasicHttpBinding bind = new BasicHttpBinding();
bind.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
bind.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
EndpointAddress endpoint = new EndpointAddress("http://abc:37379/_vti_bin/lists.asmx");
ServiceReference1.ListsSoapClient listService
= new ConsoleApplication1.ServiceReference1.ListsSoapClient(bind, endpoint);
var elm = listService.GetListItems("Tasks", null, null, null, "10", null, @"06dc3b48-a55e-4db8-8511-acbaf9748e15");
}
catch (Exception ex){
Console.WriteLine("Message:\n" + ex.Message + "\nDetail:\n" +
ex.ToString() + "\nStackTrace:\n" + ex.StackTrace); }
Бум, это вызывает исключение: «HTTP-запрос не авторизован с помощью схемы аутентификации клиента« Согласование ». Заголовок аутентификации, полученный от сервера, был« NTLM ».»
Я действительно хотел сделать что-то вроде следования тому, что мы делали в старой сети 2,0 дня
serviceProxy.Credentials = new NetworkCredentials("username","password","domain");
Какой самый простой способ достичь такого рода обработки учетных данных в новых прокси-классах ??
(Кстати, как вы уже заметили, я использую Binding / endpoint все внутри кода, а не в файле конфигурации, это ограничение для моего приложения. Пожалуйста, не говорите мне, чтобы изменить это - это невозможно).
Может кто-нибудь помочь мне с этим ?? Был бы очень признателен.