Asp.net core HttpContext.Items可以在.net核心DLL中访问吗?

Asp.net core HttpContext.Items可以在.net核心DLL中访问吗?,asp.net-core,.net-core,Asp.net Core,.net Core,我正在使用.NETCore2.1应用程序(WebAPI) 我可以通过以下方式访问控制器中的HttpContext.Items[“\u logId”]: HttpContext.Items["_logId"] = generalRequest.LogId; 但当我尝试通过.Net核心类库DLL访问它时: public class GeneralRequest { public string LogId => HttpContext.Items["_logId"];

我正在使用.NETCore2.1应用程序(WebAPI)

我可以通过以下方式访问控制器中的
HttpContext.Items[“\u logId”]

HttpContext.Items["_logId"] = generalRequest.LogId;
但当我尝试通过.Net核心类库DLL访问它时:

 public class GeneralRequest
    {
        public string LogId => HttpContext.Items["_logId"];
        public string Body { get; set; }
        ...
    }
我得到一个错误:

无法访问非静态属性项

在早期(非.NETCore)版本中,我们可以以静态方式访问项

问题

添加到
项目
的整个要点是,我们将能够在请求的任何地方阅读它们


如何从类库中读取
HttpContext.Items

您需要通过DI框架或asp.net核心在构造函数中注入自己的框架:

public class GeneralRequest 
{
    public GeneralRequest(IHttpContextAccessor httpContextAccessor)
    {
        this.LogId = httpContextAccessor.HttpContext.Items["_logId"];
    }
}
别忘了将其添加到Startup.cs中

 services.AddHttpContextAccessor();

您需要通过DI框架或asp.net核心在构造函数中注入自己的框架:

public class GeneralRequest 
{
    public GeneralRequest(IHttpContextAccessor httpContextAccessor)
    {
        this.LogId = httpContextAccessor.HttpContext.Items["_logId"];
    }
}
别忘了将其添加到Startup.cs中

 services.AddHttpContextAccessor();

GeneralRequest
是一种响应自定义类型,我必须自己
new
。。。。我必须注入
IHttpContextAccessor
才能解决这个问题吗?我想构造函数注入就是你要走的路。如果您不想这样做,您可以始终解析为读取web应用程序中的logId,并将具体值传递给GeneralRequest类。这将为您节省一个依赖项
GeneralRequest
是一个响应自定义类型,我必须自己
new
。。。。我必须注入
IHttpContextAccessor
才能解决这个问题吗?我想构造函数注入就是你要走的路。如果您不想这样做,您可以始终解析为读取web应用程序中的logId,并将具体值传递给GeneralRequest类。这样你就不会有依赖关系了