2009-04-14 10 views
5

Comment puis-je me connecter à mes connexions? Je veux 3 objectifs HttpWebRequest par défaut qui ne passeront pas par un proxy et 3 autres qui le font. Est-ce que je fais WebRequestObject.Proxy = myProxy; sur les objets je veux utiliser un proxy sur et ne fais rien sur les 3 objs je ne sais pas? aussi les objets vont s'initialiser dans un ordre inconnu donc je peux avoir 2 pas, 2 qui est mandaté, un 3ème qui n'est pas et un final qui est. Est-ce simplement en écrivant .Proxy = myProxy?HttpWebRequest un proxy et un non

Répondre

2

Oui, vous devez créer un nouvel objet proxy pour chaque propriété de la requête que vous souhaitez utiliser comme proxy et laisser le champ vide pour ceux que vous avez définis. Pour ceux que vous ne définissez pas, ils utiliseront les valeurs de proxy par défaut dans la configuration de system.net dans votre app.config.

10

Pour les demandes qui nécessitent une procuration, oui, ça va bien travailler:

request.Proxy = myProxy; 

Pour les demandes qui souhaitent contourner un proxy, utilisez:

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

Si vous souhaitez utiliser la le proxy par défaut IE (ou si vous avez défini un proxy par défaut dans votre app/web.config), il suffit de ne pas régler le proxy ou le mettre à null:

request.Proxy = null; 

En savoir plus sur possible HttpWebRequest.Proxy values here et GetEmptyWebProxy here.

+1

Depuis 'GlobalProxySelection' est maintenant obsolète, il est préférable d'utiliser' HttpWebRequest.DefaultWebProxy' à la place. –

+0

@AndreasGrech En fait, le remplacement de 'GetEmptyWebProxy' est simplement' null'. DefaultWebProxy est quelque chose d'autre. – RichardTheKiwi

3

System.Net.GlobalProxySelection.GetEmptyWebProxy est maintenant obsolète.

J'ai fini avec cette situation

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 
     } 
    } 

Avec des détails du proxy web.config:

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