ASP.NET Core 中 HttpContext 类的作用详解

HttpContext 封装了有关单个 HTTP 请求的所有 HTTP 特定信息。

当 HTTP 请求到达服务器时,服务器会处理该请求并构建一个 HttpContext 对象。此对象表示您的应用程序代码可用于创建响应的请求。

ASP.NETCore Web 服务器构造的 HttpContext 对象充当单个请求的容器。它存储请求和响应信息,例如请求的属性、与请求相关的服务以及来自请求或错误的任何数据(如果有)。

ASP.NET Core 应用程序通过 IHttpContextAccessor 接口访问 HTTPContext。HttpContextAccessor 类实现了它。当您需要访问服务内的 HttpContext 时,您可以使用此类。

访问 HttpContext 的不同方式

以下是从各种类型的应用程序访问 HttpContext 的不同方法。

从控制器:

public class HomeController : Controller{
   public IActionResult About(){
      var pathBase = HttpContext.Request.PathBase;

      ...

      return View();
   }
}

从剃刀页面:

public class AboutModel : PageModel{
   public string Message { get; set; }

   public void OnGet(){
      Message = HttpContext.Request.PathBase;
   }
}

从剃刀的角度来看:

@{
   var username = Context.User.Identity.Name;

   ...
}
From middleware
public class MyCustomMiddleware{
   public Task InvokeAsync(HttpContext context){
      ...
   }
}

HttpContext 上有用的属性和方法

下面是 HttpContext 对象的一些有用的属性和方法。

特性:

  • Connection:获取有关此请求的底层网络连接的信息。

  • Request : 获取此请求的 HttpRequest 对象

  • Response : 获取此请求的 HttpResponse 对象

  • Session:获取或设置用于管理此请求的用户会话数据的对象

方法

  • Abort():中止请求基础的连接。

在ASP.NETCore 中,Kestrel Web 服务器接收 HTTP 请求并构造请求的 C# 表示形式,即 HttpContext 对象。但是,Kestrel 本身不会生成响应,而是将 HttpContext 对象转发到ASP.NETCore 应用程序中的中间件管道。中间件是处理传入请求并执行各种操作(例如身份验证、缓存、日志记录等)的一系列组件。