使用IHttpClientFactory设置默认请求标头

问题描述

我正在开发一个ASP.NET Core MVC App,在该应用程序中,我想在用户到达某个页面时为每个请求设置一个授权标头。我试图从HttpClient类使用DefaultRequestHeaders.Authorization。 但是,它只是不设置标题。 这是我的代码

启动

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient();
    //Some more code
}

控制器

public class MyController: Controller
{
    private readonly System.Net.Http.IHttpClientFactory _clientFactory;

    public MyController(System.Net.Http.IHttpClientFactory clientFactory)
    {
         _clientFactory = clientFactory;
    }

    public IActionResult MethodWhichIWantToSetThetoken()
    {
        var client = _clientFactory.CreateClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme,"veryBigTokenHere");
         
       string abc = Request.Headers["Authorization"]; //Yeah,it's null!
       return View();
    }

解决方法

代替

  client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme,"veryBigTokenHere");

使用

 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer","veryBigTokenHere");