.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 изхвърля поведението на оригиналната политика за всяка дестинация. Правете това само когато фиксирана крайна точка е предвидената конфигурация на приложението, а не като заобиколно решение на грешка в типа.