Как установить прокси-сервер HTTP (WebProxy) на прокси-сервере службы на стороне клиента WCF?
Как я могу установить прокси HTTP программно, на клиенте WCF, не используя прокси по умолчанию?
Прокси, прокси, прокси.
В соответствии с моделью разработки WCF, я генерирую «прокси» классы на стороне клиента, запустив svcutil.exe в WSDL для службы. (Это также создает файл конфигурации на стороне клиента).
В своем коде я обновляю экземпляр этого класса и могу подключиться к сервису. Очень хорошо.
var svcProxy = new MyWebService();
svcProxy.GetInformation(request);
Мы называем эту вещь прокси-классом, но есть другой прокси-сервер - http-прокси. Этот сервис использует wsHttpBinding basicHttpBinding, поэтому он работает через http. Теперь предположим, что я хочу подключить клиента к веб-службе через http-прокси (смоделированный System.Net.WebProxy в .NET BCL). Из моего обширного, восхитительного опыта чтения документации .NET и WCF я знаю, что среда выполнения WCF, если не указано иное, будет использовать системный прокси-сервер по умолчанию при обмене данными через http / https.
Я могу установить это из командной строки в WinXP / 2003с ProxyCfg.exe, как описано здесьи в более поздних версиях Windowsс netsh.exe, как описано здесь.
Я также могу указать веб-прокси по умолчанию для использования в приложении, установивСвойство System.Net.WebRequest.DefaultWebProxy.
Но предположим, что я хочу подключиться через прокси, который отличается от общесистемного прокси? Например, возможно, нет общесистемного прокси, но мне нужно использовать его для веб-службы, в частности. Или, может быть, есть общесистемный прокси, но мне нужно использовать другой, для веб-службы. И на самом деле, может быть, есть несколько клиентов веб-служб, и каждый из них должен получить свой прокси-сервер.
Как можно установить прокси для привязки?
В модели ASMX я мог бы сделать это:
var svcProxy = new MyWebService();
svcProxy.Proxy = new System.Net.WebProxy("http://proxyserver:1234", true);
svcProxy.GetInformation(request);
Но это невозможно с WCF; сгенерированные WCF клиентские прокси-классы не предоставляют свойство Proxy. Как настроить прокси-сервер http для каждого клиентского прокси-сервера и как настроить аутентификацию на прокси-сервере http?
Связанный:
- как в настройке прокси-с учетными-на-генерируемой-ФОС-клиент