ASP.NET Core 中的请求功能Request Features in ASP.NET Core
与 HTTP 请求和响应相关的 Web 服务器实现详细信息在接口中定义。服务器实现和中间件使用这些接口来创建和修改应用程序的托管管道。
ASP.NET Core 在 中定义了许多 HTTP 功能接口,服务器使用这些接口来标识其支持的功能。以下功能接口处理请求并返回响应:
IHttpRequestFeature
定义 HTTP 请求的结构,包括协议、路径、查询字符串、标头和正文。
IHttpResponseFeature
定义 HTTP 响应的结构,包括状态代码、标头和响应的正文。
IHttpAuthenticationFeature
定义支持基于 ClaimsPrincipal
来标识用户并指定身份验证处理程序。
IHttpUpgradeFeature
定义对 的支持,允许客户端指定在服务器需要切换协议时要使用的其他协议。
IHttpConnectionFeature
为本地和远程地址以及端口定义属性。
定义支持中止连接,或者检测是否已提前终止请求(如由于客户端断开连接)。
IHttpSendFileFeature
定义异步发送文件的方法。
IHttpWebSocketFeature
定义支持 Web 套接字的 API。
IHttpRequestIdentifierFeature
添加一个可以实现的属性来唯一标识请求。
ISessionFeature
为支持用户会话定义 ISessionFactory
和 ISession
抽象。
定义使用 TLS 令牌绑定参数的方法。
备注
ISessionFeature
不是服务器功能,而是由 SessionMiddleware
实现(请参阅管理应用程序状态)。
HttpContext
的 Features
属性为获取和设置当前请求的可用 HTTP 功能提供了一个接口。由于功能集合即使在请求的上下文中也是可变的,所以可使用中间件来修改集合并添加对其他功能的支持。
虽然服务器负责创建功能集合,但中间件既可以添加到该集合中,也可以使用集合中的功能。例如,StaticFileMiddleware
访问 IHttpSendFileFeature
功能。如果该功能存在,则用于从其物理路径发送所请求的静态文件。否则,使用较慢的替代方法来发送文件。如果可用,IHttpSendFileFeature
允许操作系统打开文件并执行直接内核模式复制到网卡。
另外,中间件可以添加到由服务器建立的功能集合中。中间件甚至可以取代现有的功能,以便增加服务器的功能。添加到集合中的功能稍后将在请求管道中立即用于其他中间件或基础应用程序本身。
功能接口定义给定请求可能支持的特定 HTTP 功能。服务器定义功能的集合,以及该服务器支持的初始功能集,但中间件可用于增强这些功能。