.NET IWebProxy: evitați convertirea proxy-urilor de sistem în WebProxy
Tratați un proxy de sistem returnat ca IWebProxy fără a presupune că clasa sa concretă este WebProxy.
IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;
Păstrați obiectul returnat ca IWebProxy. Acest fragment se aplică codului existent bazat pe WebRequest, nu este o recomandare de a adopta acel API vechi într-o aplicație nouă.
WebProxy implementează interfața, dar nu fiecare obiect care implementează interfața moștenește din WebProxy. Un wrapper de sistem poate deci refuza conversia înainte de a avea loc vreo cerere de rețea. Un nume de clasă privată .NET Framework precum WebProxyWrapperOpaque este un detaliu de implementare, nu o problemă a punctului final al proxy-ului sau a contului.
Pentru o decizie de rută, apelați IsBypassed(destination) și GetProxy(destination) cu URI-ul real al destinației. O ocolire poate returna aceeași destinație, iar o politică bazată pe PAC poate alege altă rută pentru alt host.
Pentru autentificare, IWebProxy expune deja Credentials. Folosiți contul și metoda acceptate fără conversie pentru a ajunge la proprietate.
Extragerea unui singur URI pentru a construi un WebProxy de înlocuire aruncă comportamentul politicii originale pe fiecare destinație. Faceți asta doar când un punct final fix este configurația dorită a aplicației, nu ca soluție pentru o eroare de tip.