Клиент WCF взаимодействует с сервером через протокол HTTP. Будет ли эта связка корректно работать, если клиент выходит в интернет через web-proxy? Нужно ли для этого писать дополнительную конфигурацию для клиента?
Работа WCF-клиента через web proxy
Лучший ответ:
По умолчанию клиент WCF использует настройки proxy, которые заданы в системе. То есть те, которые устанавливаются в Internet Explorer. Если требуется задать специфичные настройки proxy, то можно использовать параметр proxyAddress
и указать, что не нужно использовать системные настройки (useDefaultWebProxy=false
):
<basicHttpBinding>
<binding name="MyClientBinding" proxyAddress="http://proxy:8080" useDefaultWebProxy="false">
</binding>
</basicHttpBinding>
Можно также вынести эти настройки в конфигурацию binding:
<binding name="CommonBinding">
<binaryMessageEncoding />
<httpTransport proxyAddress="http://proxy:8080" useDefaultWebProxy="false" />
</binding>
Можно также определить глобальные настройки прокси для всех ендпойнтов:
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy bypassonlocal="False" proxyaddress="http://proxy:8080" />
</defaultProxy>
</system.net>
Взято из статьи Configuring a proxy-server for WCF. Также в статье подмечена интересная деталь: если клиент работает с локальным сервером, то настройки прокси игнорируются и все запросы идут напрямую. Чтобы избежать такой ситуации нужно в адресе сервера писать не localhost, а имя машины.