Un proxy configurado para un HttpClient con nombre no configura automáticamente todos los clientes que devuelve IHttpClientFactory. Mantenga juntos el nombre del registro y el nombre 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 nombre:

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

El punto de conexión es ilustrativo. Para las solicitudes permitidas a servicios públicos, la lista de proxies HTTP ofrece candidatos para la URL de WebProxy del cliente con nombre. Crear el cliente predeterminado sin nombre en otro lugar es una búsqueda distinta, aunque ambos clientes provengan de la misma fábrica inyectada.

Configure el comportamiento del proxy a nivel de conexión en el controlador principal en lugar de tratarlo como un encabezado de solicitud de destino. La fábrica puede administrar la vida útil de los controladores por separado de los objetos HttpClient que devuelve.

Si un cliente tipado u otro SDK posee la llamada, compruebe qué registro proporciona su HttpClient. Un cliente con nombre correctamente configurado que nunca se utiliza no afecta a la ruta de red de ese SDK.

Utilice esta configuración para una política de enrutamiento estable. Cambiar un controlador activo entre operaciones sigue siendo un problema aparte de concurrencia y vida útil.

Artículos relacionados