ASP.NET Core 中 HttpContext 类的作用详解
HttpContext封装了有关单个HTTP请求的所有HTTP特定信息。
当HTTP请求到达服务器时,服务器会处理该请求并构建一个HttpContext对象。此对象表示您的应用程序代码可用于创建响应的请求。
ASP.NETCoreWeb服务器构造的HttpContext对象充当单个请求的容器。它存储请求和响应信息,例如请求的属性、与请求相关的服务以及来自请求或错误的任何数据(如果有)。
ASP.NETCore应用程序通过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中,KestrelWeb服务器接收HTTP请求并构造请求的C#表示形式,即HttpContext对象。但是,Kestrel本身不会生成响应,而是将HttpContext对象转发到ASP.NETCore应用程序中的中间件管道。中间件是处理传入请求并执行各种操作(例如身份验证、缓存、日志记录等)的一系列组件。