2009-04-14 10 views
5

¿Cómo puedo proxy mis conexiones? quiero 3 objs de HttpWebRequest predeterminados que no pasen por un proxy y otros 3 que lo hagan. ¿Hago WebRequestObject.Proxy = myProxy; en objetos en los que quiero usar un proxy y no hago nada en los 3 objs, ¿no es así? también los objetos se inicializarán en un orden desconocido, así que puedo tener 2 no, 2 que es proxy, un tercero que no lo es y un final eso es. ¿Simplemente está escribiendo .Proxy = myProxy?HttpWebRequest un proxy y uno no

Respuesta

2

Sí, crearía un nuevo objeto proxy para cada propiedad de la solicitud que desea utilizar como proxy y simplemente lo dejará en blanco para los que haya realizado. Para aquellos que no configuran, usarán los valores de proxy predeterminados en la configuración de system.net en su app.config.

10

Para las solicitudes que requieren un proxy, sí, eso funcionará bien:

request.Proxy = myProxy; 

Para solicitudes que desean evitar un proxy, utilice:

request.Proxy = System.Net.GlobalProxySelection.GetEmptyWebProxy; 

Si desea utilizar el proxy predeterminado de IE (o si ha configurado un proxy por defecto en su aplicación/web.config), simplemente no configure el proxy, o se establece en null:

request.Proxy = null; 

Más sobre possible HttpWebRequest.Proxy values here y GetEmptyWebProxy here.

+1

Desde 'GlobalProxySelection' ya está obsoleta, es mejor usar' HttpWebRequest.DefaultWebProxy' lugar. –

+0

@AndreasGrech En realidad, el reemplazo de 'GetEmptyWebProxy' es simplemente' nulo'. DefaultWebProxy es otra cosa. – RichardTheKiwi

3

System.Net.GlobalProxySelection.GetEmptyWebProxy ahora está en desuso.

que terminó con esta situación

private static void SetProxy(HttpWebRequest request) 
    { 
     if (AppConstants.UseProxyCredentials) 
     { 
      //request.Proxy = available in System.Net configuration settings 
      request.Proxy.Credentials = Credentials.GetProxyCredentials(); 
     } 
     else 
     { 
      request.Proxy = null; 
      //request.Proxy.Credentials = n/a 
     } 
    } 

Con detalles del proxy en web.config:

<system.net> 
    <defaultProxy> 
    <proxy 
     autoDetect="False" 
     bypassonlocal="True" 
     scriptLocation="http://www.proxyscript..." 
     proxyaddress="http://proxyurl..." /> 
    </defaultProxy> 
</system.net> 
<system.web>