Сбой запроса с состоянием HTTP 407: требуется аутентификация.

Ок, ребята.. вот сделка ->

Я использовал веб-сервис в своем консольном приложении и могу успешно вызывать его при запуске с локального компьютера.

Проблемы накапливаются, когда я разворачиваю приложение на своем Win 2K8 box. Сначала я обнаружил -> Не удалось определить удаленное имя: "www.www.net" ->, поэтому я добавил WebProxy и подключил его к свойству.Proxy веб-службы.

Следующая ошибка, с которой я столкнулся, -> Запрос не выполнен с состоянием HTTP 407: требуется аутентификация. И я в растерянности идей, чтобы решить то же самое.

Я использовал -> .Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; а также имеют явно определенные прокси-кредиты -> имя пользователя, пароль, домен -> но безрезультатно

Веб-сервис работает нормально при доступе через браузер изнутри сервера.

Любая помощь будет высоко оценен.

Спасибо за ваше время.

Rgds,

2 ответа

Решение

Хорошо.. вот что наконец заработало ->

Связался с ребятами из NOC (сети), и они, в свою очередь, включили явный IP-доступ к запросам / ответам / с сервера.

Приведет ли это к нарушению безопасности - ну, я не уверен.

Rgds,

Вы за прокси-сервер? В вашем браузере настроен прокси-сервер? 407 означает "Требуется проверка подлинности прокси", поэтому вам необходимо предоставить учетные данные, с помощью которых вы можете проходить проверку подлинности на прокси-сервере. Мое первое предположение, что вам нужно что-то подобное.

  var credentials = new NetworkCredential("username", "password", "domain");
  WebProxy proxy = new WebProxy("YourProxyServerUri", true) { Credentials = credentials };

И тогда вы должны использовать объект proxy в качестве прокси-сервера для вашего веб-сервиса.

Вы также можете использовать настроенный прокси-сервер системы:

  WebProxy myProxy = (WebProxy) System.Net.HttpWebRequest.GetSystemWebProxy();

Или вы можете даже настроить его в web.config (но я думаю, что здесь невозможно предоставить учетные данные:

 <system.net> 
      <defaultProxy useDefaultCredentials="true"> 
         <proxy usesystemdefault="False" proxyaddress="YourProxyServerUri"                
          bypassonlocal="True" /> 
      </defaultProxy> 
 </system.net>

Если все работает нормально, вы можете захотеть предоставить какой-либо способ настройки прокси-сервера и учетных данных во время выполнения, вне вашего кода. В противном случае вам всегда придется перекомпилировать что-либо, если что-то в вашей производственной среде или местоположении меняется. Вы можете поместить это в раздел appSettings в web.config, в базу данных, app.config и т. Д.

Также убедитесь, что вы указали правильный номер порта в настройках (например, 192.168.1.100:8888)

Другие вопросы по тегам