在 ASP.NET Core 中,HttpContext.Current 已被弃用。本文探讨了访问当前 HTTP 上下文的替代方法。
1. HttpContext 属性
您可以通过控制器的 HttpContext 属性访问当前的 HTTP 上下文:
public class HomeController : Controller { public IActionResult Index() { MyMethod(HttpContext); return View(); } private void MyMethod(Microsoft.AspNetCore.Http.HttpContext context) { // Use the HTTP context here } }
2.中间件中的 HttpContext 参数
在自定义 ASP.NET Core 中间件中,当前 HTTP 上下文会自动作为参数注入到 Invoke 方法中:
public async Task InvokeAsync(HttpContext context) { // Use the HTTP context here }
3. HTTP Context Accessor
对于不由 ASP.NET Core 依赖注入管理的类,可以使用 IHttpContextAccessor 辅助服务:
public class MyService { private readonly IHttpContextAccessor _httpContextAccessor; public MyService(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void UseHttpContext() { var context = _httpContextAccessor.HttpContext; // Use the HTTP context here } }
不要忘记在 ConfigureServices 中注册 HttpContextAccessor :
public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... }
以上是如何在 ASP.NET Core 中访问 HttpContext?的详细内容。更多信息请关注PHP中文网其他相关文章!