Um proxy configurado para um HttpClient nomeado não configura automaticamente todos os clientes retornados pelo IHttpClientFactory. Mantenha o nome do registro e o nome solicitado juntos.

services.AddHttpClient("via-proxy")
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
    {
        Proxy = new WebProxy("http://203.0.113.10:8080"),
        UseProxy = true
    });

Em seguida, recupere essa configuração nomeada:

var client = factory.CreateClient("via-proxy");

O endpoint é ilustrativo. Para solicitações permitidas a serviços públicos, a lista de proxies HTTP fornece candidatos para a URL do WebProxy do cliente nomeado. Criar o cliente padrão sem nome em outro lugar é uma consulta diferente, mesmo que ambos venham da mesma fábrica injetada.

Configure o comportamento de proxy no nível da conexão no handler primário, em vez de tratá-lo como um cabeçalho de solicitação de destino. A fábrica pode gerenciar o ciclo de vida dos handlers separadamente dos objetos HttpClient que retorna.

Se um cliente tipado ou outro SDK for o responsável pela chamada, verifique qual registro fornece seu HttpClient. Um cliente nomeado corretamente configurado que nunca é usado não afeta o caminho de rede desse SDK.

Use esta configuração para uma política de roteamento estável. Alterar um handler ativo entre operações continua sendo um problema separado de concorrência e ciclo de vida.

Artigos relacionados