Доступ к значениям сеанса в методе AddHttpMessageHandler - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь создать универсальный c способ добавить мой токен доступа к моим исходящим вызовам в приложении Razor. Я следовал документации , чтобы добавить DelegatingHandler через AddHttpMessageHandler:

services.AddHttpClient("MyName").AddHttpMessageHandler<AddAuthorizationHeaderHandler>();

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

ASP. Net Ядро хранит это значение в файле cook ie. В «коде позади» моей страницы я могу получить значение через HttpContext (член c класса PageModel). Например:

var accessToken = await HttpContext.GetTokenAsync("access_token");

Проблема, с которой я столкнулся, заключается в том, что я не могу найти способ получить доступ к этому HttpContext в моем DelegatingHandler.

Как можно Я получаю в сеансе значение access_token в моем DelegatingHandler?

1 Ответ

1 голос
/ 16 апреля 2020

Внедрить IHtpContextAccessor в делегирующий обработчик

private readonly IHttpContextAccessor accessor;

public AddAuthorizationHeaderHandler(IHttpContextAccessor accessor) {
    this.accessor = accessor
}

, чтобы вы могли иметь доступ к контексту

AddAuthorizationHeaderHandler.SendAsyn c

//...

var accessToken = await accessor.HttpContext.GetTokenAsync("access_token");

//...

Обязательно зарегистрируйте его в сервисном наборе

services.AddHttpContextAccessor();
...