在ASP中注入HttpContext.净5



我想注入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作为替代。

最新更新