.NET IWebProxy: voorkom dat systeemproxy's naar WebProxy worden gecast
Behandel een systeemproxy die als IWebProxy wordt teruggegeven zonder aan te nemen dat de concrete klasse WebProxy is.
IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;
Houd het teruggegeven object als IWebProxy. Dit fragment geldt voor bestaande code op basis van WebRequest, niet als aanbeveling om die verouderde API in een nieuwe toepassing te gebruiken.
WebProxy implementeert de interface, maar niet elk object dat de interface implementeert erft van WebProxy. Een systeemwrapper kan de cast daarom weigeren voordat er een netwerkverzoek plaatsvindt. Een privéklassenaam van .NET Framework zoals WebProxyWrapperOpaque is een implementatiedetail, geen probleem met het proxy-eindpunt of het account.
Roep voor een routebeslissing IsBypassed(destination) en GetProxy(destination) aan met de werkelijke bestemmings-URI. Een omleiding kan die bestemming zelf teruggeven, en een op PAC gebaseerd beleid kan een andere route voor een andere host kiezen.
Voor verificatie maakt IWebProxy al Credentials beschikbaar. Gebruik het ondersteunde account en de methode zonder te casten om de eigenschap te bereiken.
Eén URI extraheren om een vervangende WebProxy te bouwen gooit het gedrag per bestemming van het oorspronkelijke beleid weg. Doe dat alleen wanneer een vast eindpunt de bedoelde toepassingsconfiguratie is, niet als omweg voor een typefout.