我需要在控制器外部的AspNet Core中獲取HttpContext。在較舊的AspNet 4中,我可以使用HttpContext.Current獲取它,但它似乎在新的AspNet中被刪除。我發現的唯一的解決方法是通過依賴注入解決的IHttpContextAccessor,並要求它的HttpContext,而是注入IHttpContextAccessor我需要IHttpContextAccessor添加在應用程序啓動一個單:在控制器外部的AspNet Core 1.0.0中獲取HttpContext
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
我研究它,這是我發現的唯一方法。我谷歌它和IHttpContextAccessor被刪除作爲默認的依賴解析器,因爲它是非常重的依賴。有沒有其他方法可以實現這一點?
編輯: 我不知道,而不是將其作爲一個Singleton的依賴解析器,我可以在同一個地方得到HttpContextAccessor的情況下將其保存在自己的單身類?
如果您需要在類中獲得'HttpContext',那麼使用IHttpContextAccessor'有什麼問題?你的代碼運行良好(只需使用構造函數注入)。 –
是的,但它的工作,我需要添加IHttpContextAccessor作爲依賴。我想知道是否在同一個地方我不能直接獲取實例?我將編輯該問題。 – yosbel
@ademcaglin所以它似乎是實現它的方式。現在,是否可以直接獲取實例,而不是添加到服務中,然後通過DI獲取?在我看來,如果我可以將它添加到DI中,應該有可能將它放在同一個地方。是嗎? – yosbel