C # Connexion par proxy

Je travaille dans un bureau qui nécessite toutes les connexions via un proxy HTTP spécifique. Je dois écrire une application simple pour interroger certaines valeurs d’un serveur Web – c’est facile s’il n’y a pas de proxy. Comment puis-je rendre l’application C # compatible avec le proxy? Comment puis-je établir une connexion via un proxy?

Cela se fait facilement par programme, dans votre code ou de manière déclarative dans le fichier web.config ou app.config.

Vous pouvez créer par programmation un proxy comme suit:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]"); WebProxy myproxy = new WebProxy("[your proxy address]", [your proxy port number]); myproxy.BypassProxyOnLocal = false; request.Proxy = myproxy; request.Method = "GET"; HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 

Vous atsortingbuez essentiellement l’object WebProxy à la propriété proxy l’object de request . Cette request utilisera alors le proxy vous définissez.

Pour obtenir la même chose de manière déclarative, vous pouvez effectuer les opérations suivantes:

      

dans votre web.config ou app.config. Cela définit un proxy par défaut que toutes les requêtes http utiliseront. Selon exactement ce que vous devez réaliser, vous pouvez ou non avoir besoin de certains atsortingbuts supplémentaires de l’élément defaultProxy / proxy , veuillez donc vous référer à la documentation correspondante.

Si vous utilisez WebClient , il possède une propriété proxy que vous pouvez utiliser.

Comme d’autres l’ont mentionné, il existe plusieurs façons d’automatiser la détection / l’utilisation des parameters de proxy.

Web.Config:

      

Utilisation de la classe WebProxy décrite dans cet article .


Vous pouvez également configurer directement les parameters de proxy (config ou code) et votre application les utilisera ensuite.

Web.Config:

      

Code:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url"); WebProxy myproxy = new WebProxy("[proxy address]:[proxy port]", false); request.Proxy = myproxy; request.Method = "GET"; HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 

Essayez ce code. Appelez-le avant de faire une requête http. Le code utilisera le proxy de vos parameters d’Internet Explorer – une chose cependant, j’utilise proxy.Credentials = .... car mon serveur proxy est un serveur d’accélération Internet NTLM authentifié. Donnez-lui un whiz.

 static void setProxy() { WebProxy proxy = (WebProxy)WebProxy.GetDefaultProxy(); if(proxy.Address != null) { proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; WebRequest.DefaultWebProxy = new System.Net.WebProxy(proxy.Address, proxy.BypassProxyOnLocal, proxy.BypassList, proxy.Credentials); } } 

Si vous souhaitez que l’application utilise le proxy par défaut du système, ajoutez-le à votre application.exe.config (où application.exe est le nom de votre application):

      

Plus de détails peuvent être trouvés dans l’ article MSDN sur System.Net

Le code de Foole a parfaitement fonctionné pour moi, mais dans .NET 4.0, n’oubliez pas de vérifier si le proxy est NULL, ce qui signifie qu’aucun proxy n’est configuré (en dehors de l’environnement d’entreprise)

Alors, voici le code qui a résolu mon problème avec notre proxy d’entreprise

 WebClient web = new WebClient(); if (web.Proxy != null) web.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

Ce one-liner fonctionne pour moi:

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;

CredentialCache.DefaultNetWorkCredentials est le paramètre de proxy défini dans Internet Explorer.

WebRequest.DefaultWebProxy.Credentials est utilisé pour toute la connectivité Internet de l’application.

Ce code a fonctionné pour moi:

 WebClient wc = new WebClient(); wc.Proxy.Credentials = CredentialCache.DefaultCredentials; 

La détection automatique de proxy est un processus par lequel un serveur proxy Web est identifié par le système et utilisé pour envoyer des demandes au nom du client. Cette fonctionnalité est également appelée détection automatique de proxy Web (WPAD). Lorsque la détection automatique de proxy est activée, le système tente de localiser un script de configuration de proxy chargé de renvoyer l’ensemble de proxys pouvant être utilisés pour la demande.

http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx

  var getHtmlWeb = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.GetEncoding("iso-8859-2") }; WebProxy myproxy = new WebProxy("127.0.0.1:8888", false); NetworkCredential cred = (NetworkCredential)CredentialCache.DefaultCredentials; var document = getHtmlWeb.Load("URL", "GET", myproxy, cred); 

Je vais utiliser un exemple pour append aux réponses ci-dessus.

J’ai rencontré des problèmes de proxy lors de l’installation de packages via Web Platform Installer

Cela aussi utilise un fichier de configuration qui est WebPlatformInstaller.exe.config

J’ai essayé les modifications suggérées dans ce forum IIS qui est

       

et

         

Aucun de ceux-ci n’a fonctionné.

Ce qui a fonctionné pour moi, c’était ceci –

      

Le module devait être enregistré avec Web Platform Installer pour pouvoir l’utiliser.