.NET IWebProxy: избегнете претворање на системски прокси во WebProxy
Работете со системски прокси вратен како IWebProxy без да претпоставите дека неговата конкретна класа е WebProxy.
IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;
Задржете го вратениот објект како IWebProxy. Овој фрагмент се однесува на постоечки код заснован на WebRequest, а не на препорака да го прифатите тој застарен API во нова апликација.
WebProxy го имплементира интерфејсот, но не секој објект што го имплементира интерфејсот наследува од WebProxy. Затоа системскиот обвивка може да го одбие претворањето пред да се случи било какво мрежно барање. Приватно име на класа .NET Framework како WebProxyWrapperOpaque е детал од имплементацијата, не проблем со крајната точка на проксито или со сметката.
За одлука за рута, повикајте IsBypassed(destination) и GetProxy(destination) со вистинскиот URI на одредиштето. Заобиколувањето може да го врати самото одредиште, а политика заснована на PAC може да избере друга рута за друг домаќин.
За автентикација IWebProxy веќе изложува Credentials. Користете ја поддржаната сметка и метод без претворање за да стигнете до својството.
Извлекувањето на еден URI за да се изгради заменски WebProxy го отфрла однесувањето на оригиналната политика по одредиште. Правете го тоа само кога фиксната крајна точка е предвидената конфигурација на апликацијата, а не како решение за грешка во тип.