Как я могу изменить конфигурацию HttpMessageHandler от повторной попытки Полли? - PullRequest
0 голосов
/ 05 ноября 2019

У меня следующая проблема. У меня есть набор прокси. Если запрос через прокси очень медленный или произошел сбой, я хотел бы повторить попытку без прокси.

Для настройки прокси у меня есть следующий код в файле Startup.cs:

services.AddHttpClient<ICheckPackagesService, CheckPackagesService>(x =>
{
    x.Timeout = TimeSpan.FromSeconds(10);
}).ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler
{
    Proxy = new WebProxy(IpService.GetIp())
});

Но я не могу представить, что мне нужно сделать, чтобы отправить новый запрос без прокси (еслипредыдущий разбился конечно!). Быстрое изучение официальной документации ничего не дает.

Пожалуйста, поделитесь своим опытом по этому делу. Спасибо!

PS Я использую .NET Core 2.2.401.

1 Ответ

1 голос
/ 13 ноября 2019

Вы не можете изменить какое-либо из свойств HttpClientHandler или назначить новую версию HttpClientHandler существующему HttpClient после его создания .

Поэтому вы не можетеиспользуйте политику повторных попыток Polly, настроенную через HttpClientFactory, для вызова через новый прокси (политики Polly, настроенные через HttpClientFactory, применяются как DelegatingHandler в HttpClient).

Как указано в первая ссылка , вместо этого используйте именованные клиенты, определенные в IHttpClientFactory, и определите именованного клиента для каждой конечной точки прокси.

...