¿Cómo puedo configurar el proxy HTTP mediante programación, en un cliente WCF, sin usar el proxy predeterminado?¿Cómo puedo establecer un HTTP Proxy (WebProxy) en un proxy de servicio WCF del lado del cliente?
Proxies, proxies, proxies.
De acuerdo con el modelo de desarrollo WCF, genero clases de "proxy" del lado del cliente ejecutando svcutil.exe en el WSDL para el servicio. (Esto también produce un archivo de configuración del lado del cliente).
En mi código actualizo una instancia de esa clase y me puedo conectar con el servicio . Muy agradable.
var svcProxy = new MyWebService();
svcProxy.GetInformation(request);
Llamamos a esto una clase proxy, pero hay otro proxy: el proxy http. Este servicio está utilizando wsHttpBinding basicHttpBinding, por lo que va más de http. Ahora, supongamos que quiero conectar el cliente al servicio web a través de un proxy HTTP (modelado por un System.Net.WebProxy en .NET BCL). Sé de mi extensa y encantadora experiencia leyendo documentación de .NET y WCF, que el tiempo de ejecución de WCF, si no se indica lo contrario, utilizará el proxy de sistema predeterminado cuando se comunique a través de http/https.
que puede establecer que a partir de la línea de comandos en WinXP/2003 with ProxyCfg.exe as described here, y en posteriores versiones de Windows with netsh.exe as described here.
También puedo especificar el proxy web predeterminado para usar dentro de la aplicación configurando System.Net.WebRequest.DefaultWebProxy property.
Pero supongamos que quiero conectarme a través de un proxy que es diferente al proxy de todo el sistema? Por ejemplo, tal vez no haya un proxy para todo el sistema, pero Necesito usar uno para el servicio web en particular. O tal vez hay un proxy de todo el sistema, pero tengo que utilizar uno diferente, para el servicio web . Y, de hecho, tal vez haya múltiples clientes de servicios web, y cada uno debería obtener un proxy diferente.
¿Cómo se puede establecer el proxy por enlace?
En el modelo ASMX, que podría hacer esto:
var svcProxy = new MyWebService();
svcProxy.Proxy = new System.Net.WebProxy("http://proxyserver:1234", true);
svcProxy.GetInformation(request);
pero esto no es posible con WCF; las clases de proxy del lado del cliente generado por WCF no exponen una propiedad Proxy. ¿Cómo configuro el proxy HTTP, por proxy del lado del cliente, y cómo configuro la autenticación en el proxy HTTP también?
relacionadas:
- how-to-set-proxy-with-credentials-to-generated-wcf-client
+1 para la fundición como BasicHttpBinding – Lijo