2015-08-16 39 views

回答

4

直接在你的依賴注射HttpContext是不推薦的方法。相反,你應該使用IHttpContextAccessor

public class MyComponent : IMyComponent { 
    private readonly IHttpContextAccessor contextAccessor; 

    public MyComponent(IHttpContextAccessor contextAccessor) { 
     this.contextAccessor = contextAccessor; 
    } 

    public string GetDataFromSession() { 
     return contextAccessor.HttpContext.Session.GetString(*KEY*); 
    } 
} 

這就是說,它通常並不需要在控制器,在那裏你可以使用Context財產容易檢索當前HttpContext

當然,由於創建控制器的方式,當您實例化控制器時,此屬性不可用,因此不要嘗試從構造函數訪問它。在這種情況下,嘗試重構代碼以避免在那裏訪問HttpContext或使用IHttpContextAccessor作爲替代。