在 AddHttpMessageHandler 方法中访问 Session 个值

Access Session Values in a AddHttpMessageHandler Method

我正在尝试创建一种通用方法来将我的访问令牌添加到我在 Razor 应用程序中的拨出电话中。我按照 documentation 通过 AddHttpMessageHandler 添加了一个 DelegatingHandler:

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

我的处理程序被正确调用,但我找不到获取包含访问令牌的 session 值的方法(因此我可以将其添加为 header)。

ASP.Net Core 将此值存储在 cookie 中。在我页面的 "code behind" 中,我可以通过 HttpContextPageModel class 的 public 成员)获取值。像这样:

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

我遇到的问题是我无法在 DelegatingHandler.

中找到访问此 HttpContext 的方法

如何在我的 DelegatingHandler 中获取 access_token 的 session 值?

IHtpContextAccessor 注入委托处理程序

private readonly IHttpContextAccessor accessor;

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

以便您可以访问上下文

AddAuthorizationHeaderHandler.SendAsync

//...

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

//...

确保将其注册到服务集合

services.AddHttpContextAccessor();