Клиент 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;