2017-06-03 231 views
2

我有问题,当我试图从IHttpContextAccessor字段始终为空httpcontext。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

配置在应用程序启动时运行,而不是每个请求。 – ssmith

回答

6

你总是会有空的HttpContext在Configure方法。

此方法用于指定ASP.NET应用程序将如何响应HTTP请求,并在Application启动时调用一次,而不是针对每个HTTP请求。这就是为什么没有什么,可以填充到HttpContext

您需要在您的服务等级中通过IHttpContextAccessor,并在请求处理期间致电IHttpContextAccessor.HttpContext。你可以看看在这个SO post中获得HTTP上下文的“类似”情况。