.NET IWebProxy: evita converter os proxies do sistema a WebProxy
Trata un proxy do sistema devolto como IWebProxy sen supor que a súa clase concreta é WebProxy.
IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;
Conserva o obxecto devolto como IWebProxy. Este fragmento aplícase a código existente baseado en WebRequest, non é unha recomendación de adoptar esa API heredada nunha aplicación nova.
WebProxy implementa a interface, pero non todos os obxectos que implementan a interface herdan de WebProxy. Por iso un contedor do sistema pode rexeitar a conversión antes de que ocorra calquera solicitude de rede. Un nome de clase privado de .NET Framework como WebProxyWrapperOpaque é un detalle de implementación, non un problema do extremo do proxy nin da conta.
Para decidir unha ruta, chama a IsBypassed(destination) e GetProxy(destination) co URI real de destino. Unha omisión pode devolver ese mesmo destino, e unha directiva baseada en PAC pode escoller outra ruta para outro host.
Para a autenticación, IWebProxy xa expón Credentials. Usa a conta e o método admitidos sen converter para chegar á propiedade.
Extraer un único URI para construír un WebProxy de substitución descarta o comportamento por destino da directiva orixinal. Fai isto só cando un extremo fixo sexa a configuración prevista da aplicación, non como solución alternativa a un erro de tipo.