Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从服务层获取HttpContext_C#_Asp.net_Asp.net Core_Httprequest_Httpcontext - Fatal编程技术网

C# 如何从服务层获取HttpContext

C# 如何从服务层获取HttpContext,c#,asp.net,asp.net-core,httprequest,httpcontext,C#,Asp.net,Asp.net Core,Httprequest,Httpcontext,我需要在每个服务请求中添加一个头,一个头MyHeader。MyHeader是用户登录时我收到的jwt 我试图从HttpContext.Request.Headers读取它。 我正在尝试在我的服务中访问它。我可以在控制器中得到结果,但不能在服务层上得到。有人能帮我在服务课上得到同样的服务吗 我在Startup#ConfigureServices中使用Asp.net core: services.TryAddSingleton<IHttpContextAccessor, HttpContext

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

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

我在Startup#ConfigureServices中使用Asp.net core

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

我想从我的应用程序调用另一个服务(axway端点中的Odata服务),用于授权此JWT令牌。在
asp.net core
中,我们有
IHttpContextAccessor
来访问
HttpContext
(如果可用)。您需要首先在
ConfigureServices
中使用
services.AddHttpContext()
@KingKing注册它。我的查询是,是否可以访问服务类上的HttpContext而不是控制器中的HttpContext。可以分享一个例子吗
public class YourServiceClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    ...

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

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

    ...