我正在使用.Net Core 2.1应用程序(Web API)。
我可以通过以下方式访问控制器内的HttpContext.Items["_logId"]
:
HttpContext.Items["_logId"] = generalRequest.LogId;
但是当我尝试通过.Net Core类库DLL访问它时:
public class GeneralRequest
{
public string LogId => HttpContext.Items["_logId"];
public string Body { get; set; }
...
}
我收到错误消息:
无法访问非静态属性项目
在早期版本(非.Net Core)中,我们可以以静态方式访问项目。
问题
添加到Items
的全部目的是使我们能够在请求中的任何地方读取它们。
如何从类库中读取HttpContext.Items
?
答案 0 :(得分:2)
您需要通过构造器中的DI框架或asp.net核心自己的框架进行注入:
public class GeneralRequest
{
public GeneralRequest(IHttpContextAccessor httpContextAccessor)
{
this.LogId = httpContextAccessor.HttpContext.Items["_logId"];
}
}
不要忘记将其添加到您的Startup.cs
services.AddHttpContextAccessor();