Удаленный сервер ответил на ошибку: (407) Требуется аутентификация прокси

Я получаю эту ошибку при вызове веб-службы:

"Удаленный сервер ответил на ошибку: (407) Требуется аутентификация прокси".

Я получаю общую идею, и я могу заставить код работать, добавив

myProxy.Credentials = NetworkCredential("user", "password", "domain");

или используя DefaultCredentials в коде. Моя проблема заключается в том, что вызов веб-службы работает без изменений.

Кажется, что есть некодельное решение с участием Machine.config, но что это такое? На данный момент я не могу добраться до файла box machine.config, чтобы посмотреть, как это выглядит. Я попытался обновить файл machine.config следующим образом, но я все еще получаю ошибку 407.

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
        <bypasslist>
            <clear />
        </bypasslist>
        <proxy proxyaddress="myproxy:9000"
               usesystemdefault="false"
               bypassonlocal="true"
               autoDetect="False" />
    </defaultProxy>
</system.net>

Ответ 1

Просто добавьте это в конфигурацию

<system.net>
    <defaultProxy useDefaultCredentials="true" >
    </defaultProxy>
</system.net>

Ответ 2

В следующем коде нам не нужно жестко кодировать учетные данные.

service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Ответ 3

Обратитесь к специалисту по брандмауэру. Они открывают брандмауэр для серверов PROD, поэтому нет необходимости использовать прокси.

Спасибо, ваш совет помог мне решить мою проблему:

Если бы установить учетные данные в двух местах, чтобы пройти мимо ошибки 407:

HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password", "domain");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");

и вуаля!

Ответ 4

Вероятно, машина или web.config в prod имеют настройки в конфигурации; вам, вероятно, не понадобится тег прокси.

<system.net>
    <defaultProxy useDefaultCredentials="true" >
        <proxy usesystemdefault="False"
               proxyaddress="http://<ProxyLocation>:<port>"
               bypassonlocal="True"
               autoDetect="False" />
    </defaultProxy>
</system.net>

Ответ 5

HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;

webRequest.Proxy = WebRequest.DefaultWebProxy;

webRequest.Credentials = new NetworkCredential("user", "password");

webRequest.Proxy.Credentials = new NetworkCredential("user", "password");

Успешно.

Ответ 6

У меня была аналогичная проблема, связанная с прокси. В моем случае этого было достаточно:

webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");