IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;

Mantenha o objeto devolvido como IWebProxy. Este fragmento aplica-se a código existente baseado em WebRequest, não é uma recomendação de adotar essa API legada numa aplicação nova.

WebProxy implementa a interface, mas nem todos os objetos que implementam a interface herdam de WebProxy. Um wrapper do sistema pode, por isso, rejeitar a conversão antes de qualquer pedido de rede ocorrer. Um nome de classe privada do .NET Framework como WebProxyWrapperOpaque é um detalhe de implementação, não um problema do endpoint do proxy nem da conta.

Para decidir uma rota, chame IsBypassed(destination) e GetProxy(destination) com o URI real de destino. Um desvio pode devolver esse mesmo destino, e uma política baseada em PAC pode escolher outra rota para outro host.

Para autenticação, IWebProxy já expõe Credentials. Use a conta e o método suportados sem converter para chegar à propriedade.

Extrair um único URI para construir um WebProxy substituto descarta o comportamento por destino da política original. Faça isso apenas quando um endpoint fixo for a configuração pretendida da aplicação, não como solução alternativa para um erro de tipo.

Artigos relacionados