Я хотел бы знать, как я могу исправить эту проблему, когда WebApp, запущенный на IIS 7/8 с Windows Authentication, бросает ошибку 401 при выполнении HttpWebRequest на другой сайт. Этот WebApp отлично работает, если я запускаю его локально в режиме отладки.401 Ошибка аутентификации во время работы C# Применение приложения HttpWebRequest
Вот фрагмент кода
HttpWebRequest webReq;
webReq = (HttpWebRequest)WebRequest.Create("http://sharepoint_site/_vti_bin/listdata.svc/mylist);
webReq.Accept = "application/json";
webReq.UseDefaultCredentials = true;
webReq.Credentials = CredentialCache.DefaultNetworkCredentials;
//webReq.Credentials = new NetworkCredential("user","password","domain");
webReq.Method = "GET";
webReq.KeepAlive = true;
Stream objStream = webReq.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream);
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
Я также был в состоянии сделать его работу путем добавления записи BackConnectionHostNames в реестре
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0
но мне нужно передать учетные данные (комментарий выше), которые мне не нравятся, потому что я не хочу использовать свою учетную запись или любую учетную запись службы.
Я хочу, чтобы WebApp использовал DefaultNetworkCredentials или DefaultCredentials. Я включил проверку подлинности Windows и поставщика NTLM в IIS на компьютере, на котором размещен этот WebApp.
Любая помощь будет принята с благодарностью, спасибо и больше энергии этому сообществу.
ОК Я установил идентификатор пула приложений в качестве Сетевой службы. Я также не хочу размещать пользовательскую учетную запись. Не следует ли передавать учетные данные текущего зарегистрированного пользователя в сети вплоть до вызова HttpWebRequest? – Joms
Являются ли пользователи аутентифицированы на вашем веб-сайте, используя их сетевые учетные данные? Вы можете включить [Олицетворение] (https://msdn.microsoft.com/en-us/library/aa292118 (v = vs.71) .aspx), чтобы использовать учетные данные человека, посещающего сайт. –
Я включил олицетворение, а затем переключился на классический режим конвейера, но все равно получаю ошибку 401, если я не предоставил пользовательский идентификатор в пуле приложений, который я не хочу. Я попробовал как Network Service, так и ApplicationPoolIdentity, но все равно не пошел. Является ли это ограничением NTLM, которое не может передавать учетные данные с родительского сайта на другой сайт? – Joms