如何从服务层获取HttpContext

时间:2021-02-11 07:22:28

标签: c# asp.net asp.net-core httprequest httpcontext

我要求在对服务的每个请求中添加标头 MyHeader。 MyHeader 是我在用户登录时收到的 jwt。

我试图从 HttpContext.Request.Headers 中读取它。 我正在尝试在我的服务中访问它。我可以在控制器中获得结果,但不能在服务层获得结果。任何人都可以帮助我在服务类中获得相同的信息。

我使用的是 Asp.net 核心

1 个答案:

答案 0 :(得分:1)

在启动#ConfigureServices 中:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

在您的服务类中:

public class YourServiceClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    ...

    // constructor
    public YourServiceClass(IHttpContextAccessor httpContextAccessor, ...)
    {
      _httpContextAccessor = httpContextAccessor;
      ...
    }

    public void YourServiceMethod() 
    {
      var headers = _httpContextAccessor.HttpContext.Request.Headers;
      ...
    }

    ...