WCF Client - 407 требуется аутентификация прокси-сервера при запуске webservice

Я создал простое приложение WinForms, которое использует бесплатный веб-сервис http://www.webservicemart.com/uszip.asmx. Но это приложение не может использовать операцию службы с ошибкой:

удаленный сервер вернул неожиданный ответ: (407) требуется проверка подлинности прокси-сервера (ISA Server требует авторизации для выполнения запроса. Доступ к службе веб-прокси запрещен)

код, который создает прокси и запускает работу сервиса:

ChannelFactory<ServiceReference1.USZipSoap> proxy = new ChannelFactory<ServiceReference1.USZipSoap>("USZipSoap");
ServiceReference1.USZipSoap client = proxy.CreateChannel();
string str = client.ValidateZip("12345");
MessageBox.Show(str);

это проблема с сетью моей компании или это прокси-сервер на стороне webservicemart.com?

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

5 ответов


в конфигурации привязки убедитесь, что useDefaultWebProxy имеет значение true - он будет использовать конфигурацию, которую вы нашли в IE. В файле конфигурации добавьте следующий фрагмент, чтобы убедиться, что учетные данные по умолчанию используются для проверки подлинности на прокси-сервере:

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

это сработало для меня... замена 10.1.0.50 и номера порта на IP вашего прокси-сервера

  <system.net>
    <defaultProxy useDefaultCredentials="true">
      <proxy usesystemdefault="False" proxyaddress="http://10.1.0.50:8080" bypassonlocal="True" />
    </defaultProxy>
  </system.net>

похоже, весь трафик в вашей компании перенаправляется через прокси. Можете ли вы перейти к веб-службе из IE и увидеть ее wsdl и вызвать тестовую страницу, чтобы увидеть некоторые результаты. Если это так, попробуйте добавить раздел ниже в свой веб-сайт.config:

<system.net>   
<defaultProxy>     
<proxy proxyaddress="<your proxy address>" bypassonlocal="true" />
</defaultProxy>
</system.net> 

вы можете найти прокси-адрес из настроек вашего IE.

Примечание: когда вы перемещаетесь в разные среды, вам нужно убедиться, что это тот же случай, что вам нужно удалите вышеуказанную конфигурацию.


вы можете установить веб.config службы, позволит использовать параметры прокси-сервера, определенные в Internet Explorer.


когда-нибудь в будущем.

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;