Как использовать «TypedHttpClientFactory» с «AddHttpMessageHandler»?C#

Место общения программистов C#
Anonymous
Как использовать «TypedHttpClientFactory» с «AddHttpMessageHandler»?

Сообщение Anonymous »

У меня есть некоторый AuthorizationHandler, который я регистрирую с помощью типизированного клиента:

Код: Выделить всё

    var clientFactory = services.BuildServiceProvider().GetRequiredService();
services.AddHttpClient()
.AddHttpMessageHandler(() =>
{
var authorization = new BearerAuthorization(clientFactory, clientId, clientSecret, authHost, token);
return new AuthorizationHandler(authorization);
});
Когда я получаю «TypedClient» напрямую через DI-контейнер, все работает нормально и перед запросом вызывается обработчик AuthorizationHandler, например так:

Код: Выделить всё

    _typedClient = serviceProvider.GetRequiredService();
await _typedClient.SendRequest(); // OK
НО. При попытке получить этого клиента из фабрики ITypedHttpClientFactory перестает вызываться обработчик, что выдает ошибку авторизации:

Код: Выделить всё

    _httpClientFactory = serviceProvider.GetRequiredService();
_typedClientFactory = serviceProvider.GetRequiredService();
using var client = _httpClientFactory.CreateClient();
using var typedClient = _typedClientFactory.CreateClient(client);

await typedClient.SendRequest(); // Fail
Как получить типизированный клиент с фабрики, у которого перед запросом будет вызываться добавленный обработчик?

Подробнее здесь: https://stackoverflow.com/questions/789 ... agehandler

Вернуться в «C#»