当我试图从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;
.....
}
答案 0 :(得分:15)
Configure
方法中总是会有空HttpContext。
此方法用于指定ASP.NET应用程序在应用程序启动时如何响应HTTP请求和调用,而不是每个HTTP请求。这就是为什么没有任何东西,可以填充到HttpContext
。
您需要在服务类中传递IHttpContextAccessor
并在请求处理期间调用IHttpContextAccessor.HttpContext
。您可以通过在此SO post中获取HTTP上下文来查看“类似”情况。