Клиент WCF - 407 Proxy Authentication Требуется при запуске веб-службы

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

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

Код, который создает прокси и запускает сервисную операцию:

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

Это проблема с сетью моей компании или это прокси на стороне http://www.webservicemart.com/?

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

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 и вызвать тестовую страницу, чтобы увидеть некоторые результаты. Если это так, попробуйте добавить следующий раздел в ваш web.config:

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

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

ПРИМЕЧАНИЕ. Когда вы переходите в другую среду, вам нужно убедиться, что это тот же случай, в противном случае вам нужно удалить вышеуказанную конфигурацию.

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

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

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
Другие вопросы по тегам