Система. Сеть. WebClient не работает с аутентификацией Windows

Главное меню> Инструменты> Параметры
Текстовый редактор (дерево)> C #> Показать группу (флажок Номера строк)

, что было просто:)

12
задан Peter Hahndorf 23 June 2009 в 01:10
поделиться

4 ответа

Я видел похожую проблему, когда интегрированная / NTLM безопасность будет работать, только если вы обращаетесь к хосту по имени машины или localhost. На самом деле, это [плохо] документированная функция в Windows, которая предназначена для защиты от "атак отражения".

По сути, вам нужно создать ключ реестра на машине, которая пытается получить доступ к серверу, и внести в белый список домен, к которому вы пытаетесь получить доступ. Каждое имя хоста / FQDN должно быть в отдельной строке - нет подстановочных знаков, и имя должно точно совпадать. Из статьи KB:

  • Нажмите Пуск, выберите Выполнить, введите regedit, а затем нажмите OK.
  • В редакторе реестра найдите и затем щелкните следующий ключ реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  • Щелкните правой кнопкой мыши MSV1_0, выберите New, а затем выберите Multi-String Value.
  • Введите BackConnectionHostNames, а затем нажмите ENTER.
  • Щелкните правой кнопкой мыши BackConnectionHostNames, а затем нажмите Изменить.
  • В поле данных Значение введите имя хоста или имена хостов для сайтов, которые находятся на локальном компьютере, а затем нажмите OK.
  • Выйдите из Редактора реестра, а затем перезагрузите компьютер.

http://support.microsoft.com/kb/956158/en-us

19
ответ дан 2 December 2019 в 06:27
поделиться

Попробуйте войти в параметры IE и явно добавить сайт в зону интрасети. Затем перезапустите программу. Также не следует запускать программу под логином администратора. Это может вызвать конфигурацию усиленной безопасности для Internet Explorer .

Это может объяснить, почему вы можете попасть на сайт с помощью Firefox и Opera, но не с помощью IE или WebClient.

1
ответ дан 2 December 2019 в 06:27
поделиться

Вы пробовали ...

new NetworkCredential( "peter", "password", "boxname" );

Вы также можете попробуйте ...

var credCache = new CredentialCache();
credCache.Add( new Uri ("http://localhost/upload.aspx"),
                 "Negotiate",
                 new NetworkCredential("peter", "password", "boxname"));
wc.Credentials = credCache;

Кроме того, согласно this , возможно, IIS настроен неправильно. Попробуйте заменить "переговоры" на "базовый" в приведенном выше примере и проверьте свою конфигурацию IIS для веб-сайта. Также существует множество возможных причин здесь .

4
ответ дан 2 December 2019 в 06:27
поделиться

Не зная вашего развертывания IIS и предполагая, что у вас есть правильные правила авторизации для набора для загрузки в IIS (например, правильные разрешения * ACL в нужных каталогах, в которые вы пытаетесь загружать контент, и т. д.), первое, что я бы попробовал, - это установить UseDefaultCredentials на true вместо явной установки учетных данных. (Возможно, вы думаете, что получаете доступ к серверу с учетными данными, которые вы устанавливаете, но это не так? Это было бы возможно, если это сработает.)

Это очень распространенный сценарий, поэтому я бы сосредоточился на правилах авторизации IIS для каталог, в который вы пытаетесь загрузить файл, фактические ACL в этом каталоге. Например, ваш сайт выдает себя за другое лицо или нет? если это так, тогда у вас должны быть фактические ACL в этом каталоге, в противном случае любой пул приложений учетной записи работает.

0
ответ дан 2 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: