Un proxy configurado para un HttpClient con nome non configura automaticamente todos os clientes que devolve IHttpClientFactory. Manteña xuntos o nome do rexistro e o nome solicitado.

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

A continuación, recupere esa configuración con nome:

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

O punto de conexión é ilustrativo. Para as solicitudes permitidas a servizos públicos, a lista de proxies HTTP ofrece candidatos para o URL de WebProxy do cliente con nome. Crear o cliente predeterminado sen nome noutro lugar é unha busca distinta, aínda que ambos os clientes veñan da mesma fábrica inxectada.

Configure o comportamento do proxy a nivel de conexión no controlador principal en lugar de tratalo como unha cabeceira de solicitude de destino. A fábrica pode xestionar as duracións dos controladores por separado dos obxectos HttpClient que devolve.

Se un cliente tipado ou outro SDK posúe a chamada, comprobe que rexistro fornece o seu HttpClient. Un cliente con nome correctamente configurado que nunca se usa non afecta á ruta de rede dese SDK.

Utilice esta configuración para unha política de enrutamento estable. Cambiar un controlador activo entre operacións segue sendo un problema aparte de concorrencia e duración.

Artigos relacionados