2017-06-03 232 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上下文的「類似」情況。