在 ASP.Net 5 中注入 HttpContext

Xia*_*Jia 4 asp.net-core

我想将 HttpContext 注入控制器的构造函数中。任何人都知道如何在 ConfigureServices() 中配置它?

谢谢

Kév*_*let 5

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*);
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,在控制器中通常不需要它,您可以HttpContext使用该Context属性轻松检索当前。

当然,由于控制器的创建方式,在实例化控制器时该属性是不可用的,所以不要尝试从构造函数中访问它。在这种情况下,尝试重构您的代码以避免访问HttpContext那里或IHttpContextAccessor用作替代品。