2009-04-14 12 views
5

Come proxy le mie connessioni? Voglio 3 objs HttpWebRequest predefiniti che non passeranno attraverso un proxy e un altro 3 che lo fa. Faccio WebRequestObject.Proxy = myProxy; sugli oggetti voglio usare un proxy e non fare nulla sui 3 objs non lo faccio? anche gli oggetti verranno inizializzati in un ordine sconosciuto, quindi potrei avere 2 no, 2 che è proxy, un 3 che non è e un finale che è. Si tratta semplicemente di scrivere .Proxy = myProxy?HttpWebRichiedi un proxy e uno non

risposta

2

Sì, si creerebbe un nuovo oggetto proxy per ogni proprietà sulla richiesta che si desidera utilizzare come proxy e si lascerà vuoto per quelli che è stato eseguito. Per quelli che non vengono impostati useranno i valori proxy predefiniti nella configurazione di system.net nel tuo app.config.

10

Per richieste che richiedono un proxy, sì, che sarà funzionano bene:

request.Proxy = myProxy; 

Per richieste che vogliono bypassare un proxy, utilizzare:

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

Se si desidera utilizzare il proxy predefinito di IE (o se hai impostato un proxy predefinito nella vostra app/web.config), semplicemente non impostare il proxy, o impostarlo su null:

request.Proxy = null; 

Ulteriori informazioni su possible HttpWebRequest.Proxy values here e GetEmptyWebProxy here.

+1

Dal 'GlobalProxySelection' è ormai obsoleto, è meglio usare' HttpWebRequest.DefaultWebProxy' invece. –

+0

@AndreasGrech In realtà, la sostituzione di 'GetEmptyWebProxy' è semplicemente' null'. DefaultWebProxy è qualcos'altro. – RichardTheKiwi

3

System.Net.GlobalProxySelection.GetEmptyWebProxy è ora deprecato.

Ho finito con questa situazione

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 i dettagli del proxy nel web.config:

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