IHttpContextAccessor HttpContext 始终为空
Posted
技术标签:
【中文标题】IHttpContextAccessor HttpContext 始终为空【英文标题】:IHttpContextAccessor HttpContext are always null 【发布时间】:2017-11-04 16:54:48 【问题描述】:当我尝试从 IHttpContextAccessor 字段获取 httpcontext 时遇到问题,该字段始终为空。
这是我的startup.cs
public void ConfigureServices(IServiceCollection services)
// Add framework services.
services.AddMvc();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
.....
// This is always null
var httpContext = app.ApplicationServices.GetService<IHttpContextAccessor>().HttpContext;
.....
【问题讨论】:
配置在应用启动时运行,而不是按请求运行。 【参考方案1】:Configure
方法中的 HttpContext 始终为空。
此方法用于指定 ASP.NET 应用程序将如何响应 HTTP 请求并在应用程序启动时调用一次,而不是针对每个 HTTP 请求。这就是为什么什么都没有,可以填充到HttpContext
。
您需要在服务类中传递IHttpContextAccessor
,并在请求处理期间调用IHttpContextAccessor.HttpContext
。您可以通过在此 SO post 中获取 HTTP 上下文来查看“类似”情况。
【讨论】:
以上是关于IHttpContextAccessor HttpContext 始终为空的主要内容,如果未能解决你的问题,请参考以下文章
IHttpContextAccessor HttpContext 始终为空
从使用“dotnet new react -au Individual”创建的项目中通过“IHttpContextAccessor”访问用户信息?
如何在 ASP.NET Core 1.0 的 DI 中的 Startup 类中添加 IHttpContextAccessor?