В сборках ServiceStack для .NET 6+ HTTP Utils создаёт ленивый общий HttpClient. Задайте фабрику обработчика при инициализации приложения, до первого вызова помощника:

ServiceStack.HttpUtils.HttpClientHandlerFactory = () =>
    new System.Net.Http.HttpClientHandler
    {
        UseProxy = true,
        Proxy = new System.Net.WebProxy("http://proxy.example:8080"),
        AutomaticDecompression =
            System.Net.DecompressionMethods.Brotli |
            System.Net.DecompressionMethods.Deflate |
            System.Net.DecompressionMethods.GZip
    };

Если общий клиент уже существует, изменение этой фабрики не перенастроит его. Этот момент — первая проверка, когда более позднее назначение кажется неэффективным. HTTP-эндпоинт можно выбрать из списка HTTP-прокси для публичного маршрута до создания этого общего клиента.

Для учётной записи прокси задайте WebProxy.Credentials через конфигурацию приложения. HttpClientHandler.UseDefaultCredentials относится к учётной записи сервера и не заполняет автоматически учётные данные этого объекта прокси.

Более старый пример с HttpWebRequest и requestFilter относится к прежней реализации. В новой форме конфигурация запроса охватывает поля запроса, а обработчик отвечает за маршрутизацию соединения.

Сохраняйте уже установленную фабрику собственного клиента или порядок владения фабрикой HTTP-клиента приложения. Эта фабрика обработчика — общая политика; одновременным несвязанным маршрутам нужны отдельно принадлежащие клиенты.

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