Как использовать «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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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