我想注入HttpContext到我的控制器的构造函数。有人知道如何在ConfigureServices()中配置它吗?
谢谢
直接在依赖项中注入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
作为替代。