Utiliser dynamicment un script WebProxy avec WPAD

J’essaie d’appeler un service Web. Je dois utiliser un proxy qui utilise un script WPAD. L’URL de ce script WPAD est différente pour différents déploiements de l’application.

Bien que IE dispose des parameters de proxy corrects, l’application s’exécute en tant que service Windows s’exécutant sous un compte système local. L’application ne connaît donc pas les parameters IE pour cet utilisateur Windows.

Mettre les éléments suivants dans app.config fonctionne:

     

Mais ceci a la ressortingction qu’il ne peut pas être configuré par l’utilisateur. Existe-t-il un moyen de faire ce qui précède de manière dynamic à partir de code (C # -)? Je soupçonne également que ce qui précède modifiera le comportement des services Web qui ne doivent pas passer par un proxy (mais je ne l’ai pas vérifié).

À l’ adresse http://msdn.microsoft.com/en-us/library/system.net.webproxy.aspx, j’ai trouvé le texte utile: “(Pour obtenir un exemple d’utilisation de la fonctionnalité WPAD, consultez la documentation de la classe IWebProxyScript. ) “mais je n’ai pas trouvé l’exemple :(.

Cet article sur le projet de code explique comment utiliser les API Windows pour exécuter le script PAC et renvoyer les informations de proxy correctes pour une URL donnée: http://www.codeproject.com/Articles/12168/Using-PAC-files-proxy.

Vous pouvez utiliser cette fonction pour connaître les détails du proxy, puis configurer directement le proxy des objects de service Web ou modifier WebRequest.DefaultProxy.

IWebProxyScript est utilisé en interne par WebProxy lui-même.

Si vous initialisez un WebProxy avec l’URL d’un script WPAD, l’URL correct pour les demandes qui lui sont transmises sera résolu. Vous pouvez définir ce WebProxy sur WebRequest et il gérera automatiquement la définition de l’URL de proxy correcte pour la cible de la demande.

 WebRequest request = WebRequest.Create("http://targeturl"); request.Proxy = new WebProxy("http://url.to/wpad.dat"); 

Vous pouvez également obtenir l’URL du proxy pour une cible donnée, comme ceci:

 WebProxy proxy = new WebProxy("http://url.to/wpad.dat"); Uri proxyUri = proxy.GetProxy(new Uri("http://targeturl")); 

Cela ne fonctionne pas pour les scripts PAC.