Ответ 1
Просто добавьте это в конфигурацию
<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>
Я получаю эту ошибку при вызове веб-службы:
"Удаленный сервер ответил на ошибку: (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>
Просто добавьте это в конфигурацию
<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>
В следующем коде нам не нужно жестко кодировать учетные данные.
service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
Обратитесь к специалисту по брандмауэру. Они открывают брандмауэр для серверов 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");
и вуаля!
Вероятно, машина или web.config в prod имеют настройки в конфигурации; вам, вероятно, не понадобится тег прокси.
<system.net>
<defaultProxy useDefaultCredentials="true" >
<proxy usesystemdefault="False"
proxyaddress="http://<ProxyLocation>:<port>"
bypassonlocal="True"
autoDetect="False" />
</defaultProxy>
</system.net>
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password");
Успешно.
У меня была аналогичная проблема, связанная с прокси. В моем случае этого было достаточно:
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");