在 ASP.NET Core 应用程序中访问 HttpContext
与其前身 ASP.NET MVC 不同,ASP.NET MVC 提供了方便的 HttpContext.Current
属性,访问 ASP.NET Core 中当前的 HttpContext
需要不同的方法。 直接静态访问方法不再可用。
解决方案:IHttpContextAccessor
ASP.NET Core 提供了 IHttpContextAccessor
接口作为解决方案。 通过将此服务注入到您的类中,无论执行上下文如何,您都可以访问当前的 HttpContext
。
示例:
让我们检查一个需要会话数据的组件:
<code class="language-csharp">public class MyComponent : IMyComponent { private readonly IHttpContextAccessor _httpContextAccessor; public MyComponent(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public string RetrieveSessionData() { return _httpContextAccessor.HttpContext.Session.GetString("KEY"); } }</code>
此MyComponent
使用注入的IHttpContextAccessor
从用户会话中检索数据。 HttpContext
被访问,Session
属性用于获取与键“KEY”关联的值。
重要注意事项:
IHttpContextAccessor
是必须注入到组件构造函数中的依赖项。HttpContextAccessor
扩展方法来简化对用户声明、cookie 和请求正文的访问。HttpContext
需要“StaticHttpContext”模式。这涉及使用全局 HttpContextAccessor
初始化 IServiceProvider
。 但是,由于潜在的并发问题,应谨慎使用此方法。以上是ASP.NET Core中如何访问当前的HttpContext?的详细内容。更多信息请关注PHP中文网其他相关文章!