.NET IWebProxy: vyhnite sa pretypovaniu systémových proxy na WebProxy
Pracujte so systémovým proxy vráteným ako IWebProxy bez toho, aby ste predpokladali, že jeho konkrétna trieda je WebProxy.
IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;
Vrátený objekt uchovajte ako IWebProxy. Tento úryvok sa týka existujúceho kódu založeného na WebRequest, nie je odporúčaním prijať toto zastarané API v novej aplikácii.
WebProxy implementuje rozhranie, ale nie každý objekt, ktorý rozhranie implementuje, dedí z WebProxy. Systémový obal preto môže pretypovanie odmietnuť skôr, než dôjde k akejkoľvek sieťovej požiadavke. Súkromný názov triedy .NET Framework, napríklad WebProxyWrapperOpaque, je detail implementácie, nie problém koncového bodu proxy či účtu.
Pre rozhodnutie o trase volajte IsBypassed(destination) a GetProxy(destination) so skutočným URI cieľa. Obchádzanie môže vrátiť samotný cieľ a politika založená na PAC môže pre iného hostiteľa zvoliť inú trasu.
Pri overovaní už IWebProxy sprístupňuje Credentials. Použite podporovaný účet a metódu bez pretypovania, aby ste sa dostali k vlastnosti.
Vytiahnutie jedného URI na zostavenie náhradného WebProxy zahodí správanie pôvodnej politiky pre jednotlivé ciele. Robte to len vtedy, keď je pevný koncový bod zamýšľanou konfiguráciou aplikácie, nie ako obchádzku chyby typu.