Asp.net core HttpContext.Items可以在.net核心DLL中访问吗?
我正在使用.NETCore2.1应用程序(WebAPI) 我可以通过以下方式访问控制器中的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"];
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类。这样你就不会有依赖关系了