Прокси, настроенный для одного именованного HttpClient, не настраивает автоматически все клиенты, возвращаемые IHttpClientFactory. Держите имя регистрации и запрашиваемое имя вместе.

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

Затем получите эту именованную конфигурацию:

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

Конечная точка приведена для иллюстрации. Для разрешённых запросов к публичным сервисам список HTTP-прокси предлагает кандидатов для URL-адреса WebProxy именованного клиента. Создание клиента по умолчанию без имени в другом месте — это другой поиск, даже если оба клиента происходят из одной и той же внедрённой фабрики.

Настраивайте поведение прокси на уровне соединения в основном обработчике, а не рассматривайте его как заголовок запроса к месту назначения. Фабрика может управлять временем жизни обработчиков отдельно от возвращаемых объектов HttpClient.

Если вызов принадлежит типизированному клиенту или другому SDK, проверьте, какая регистрация предоставляет его HttpClient. Правильно настроенный именованный клиент, который никогда не используется, не влияет на сетевой путь этого SDK.

Используйте эту конфигурацию для стабильной политики маршрутизации. Замена работающего обработчика между операциями остаётся отдельной проблемой параллелизма и времени жизни.

Похожие статьи