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;