60

я получаю эту ошибку, когда я звоню веб-службы:Удаленный сервер возвратил ошибку: (407) Proxy Authentication Required

«Удаленный сервер возвратил ошибку: (407) Proxy Authentication Required».

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

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

или с помощью DefaultCredentials в коде. Моя проблема заключается в том, что вызов веб-сервиса работает без этого.

Похоже, что есть некодомное решение, связанное с Machine.config, но что это такое? На данный момент я не могу добраться до файла 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> 

ответ

6

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

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

Спасибо, я попытался это и я все еще получаю "(407) Proxy Authentication Required" ошибка. Добавляет ли раздел, который вы перечисляете, для предотвращения ошибки? Единственное, что работает в моем локальном окне, это установить свойство myProxy.Credentials в коде. – chris

19

Обратитесь к специалисту по брандмауэру. Они открывают брандмауэр для серверов 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"); 

и вуаля!

+0

Спасибо @ Werner-du-Toit. Это именно то, что мне нужно. –

+0

uirTradeStream? –

2

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

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

webRequest.Proxy = WebRequest.DefaultWebProxy; 

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

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

Он успешно.

+0

uirTradeStream? –

+0

привет, используя этот код, но он не работает в webRequest.Proxy = WebRequest.DefaultWebProxy; и получение исключения: (407) Требуется прокси-аутентификация. помогите – user1196392

47

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

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

Это сработало идеально для меня. Если вы не захотите жестко указывать имя пользователя и пароль, сначала попробуйте этот параметр. – sapbucket

+0

Отличный материал для меня! :) – Funky

+0

Отличный материал для меня! –

109

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

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

Этот резольвер мой вопрос. Спасибо! –

+0

Добро пожаловать –

+0

Для тех, кого это интересует, это было именно то, что мне нужно было в приложении консоли/приложениях NetSuite из (как бы то ни было) ограничения брандмауэра/прокси. – dah97765

Смежные вопросы