首页 > 解决方案 > 如何从服务层获取 HttpContext

问题描述

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

我试图从 HttpContext.Request.Headers 中读取它。我正在尝试在我的服务中访问它。我可以在控制器中得到结果,但不能在服务层上得到结果。谁能帮我在服务课上得到同样的结果。

我正在使用 Asp.net 核心

标签: c#asp.netasp.net-corehttprequesthttpcontext

解决方案


在 Startup#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;
      ...
    }

    ...

推荐阅读