HttpContext 封装了有关单个 HTTP 请求的所有 HTTP 特定信息。
当 HTTP 请求到达服务器时,服务器会处理该请求并构建一个 HttpContext 对象。此对象表示您的应用程序代码可用于创建响应的请求。
ASP.NETCore Web 服务器构造的 HttpContext 对象充当单个请求的容器。它存储请求和响应信息,例如请求的属性、与请求相关的服务以及来自请求或错误的任何数据(如果有)。
ASP.NET Core 应用程序通过 IHttpContextAccessor 接口访问 HTTPContext。HttpContextAccessor 类实现了它。当您需要访问服务内的 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 对象的一些有用的属性和方法。
Connection:获取有关此请求的底层网络连接的信息。
Request : 获取此请求的 HttpRequest 对象
Response : 获取此请求的 HttpResponse 对象
Session:获取或设置用于管理此请求的用户会话数据的对象
Abort():中止请求基础的连接。
在ASP.NETCore 中,Kestrel Web 服务器接收 HTTP 请求并构造请求的 C# 表示形式,即 HttpContext 对象。但是,Kestrel 本身不会生成响应,而是将 HttpContext 对象转发到ASP.NETCore 应用程序中的中间件管道。中间件是处理传入请求并执行各种操作(例如身份验证、缓存、日志记录等)的一系列组件。