.NET IWebProxy : évitez de convertir les proxys système en WebProxy
Traitez un proxy système renvoyé comme IWebProxy sans supposer que sa classe concrète est WebProxy.
IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;
Conservez l'objet renvoyé en tant que IWebProxy. Cet extrait concerne du code existant basé sur WebRequest, et non une recommandation d'adopter cette API héritée dans une nouvelle application.
WebProxy implémente l'interface, mais tout objet qui implémente l'interface n'hérite pas de WebProxy. Un wrapper système peut donc refuser la conversion avant qu'aucune requête réseau n'ait lieu. Un nom de classe privé du .NET Framework comme WebProxyWrapperOpaque est un détail d'implémentation, pas un problème de point de terminaison de proxy ni de compte.
Pour décider d'une route, appelez IsBypassed(destination) et GetProxy(destination) avec l'URI réelle de destination. Un contournement peut renvoyer cette destination elle-même, et une stratégie fondée sur PAC peut choisir une autre route pour un autre hôte.
Pour l'authentification, IWebProxy expose déjà Credentials. Utilisez le compte et la méthode pris en charge sans conversion pour accéder à la propriété.
Extraire un seul URI pour construire un WebProxy de remplacement écarte le comportement par destination de la stratégie d'origine. Ne le faites que lorsqu'un point de terminaison fixe est la configuration applicative voulue, et non comme contournement d'une erreur de type.