ASP.NET Core 有一点我相信我还没有完全理解,那就是请求功能的想法。正如中所解释的the docs https://docs.asp.net/en/latest/fundamentals/request-features.html:
功能接口定义给定请求可能支持的特定 HTTP 功能。服务器定义功能集合以及该服务器支持的初始功能集,但可以使用中间件来增强这些功能。
我对此的最初理解是,请求功能是服务器应该公开以在应用程序管道上使用的所有内容。也就是说,服务器应该执行的行为,例如发送文件。
另一方面,例如,还有身份验证请求功能。现在,我不确定身份验证是否属于这一类。它看起来不像是应用程序应该调用的某些服务器行为,而是应用程序本身的一个问题。
这让我想知道是什么真正使某些东西成为请求功能。那么,是什么让某些东西成为 ASP.NET Core 中的请求功能呢?难道我最初的理解是错误的?决定将某些内容作为请求功能的背后是什么?
我对此的最初理解是,请求功能是服务器应该公开以在应用程序管道上使用的所有内容。也就是说,服务器应该执行的行为,例如发送文件。
这是 http 功能的一种用途。它也是增强或增强 HttpContext 上的行为的一种方法,例如缓冲、发送文件、身份验证、Websockets。
中间件还可以添加特定于该中间件的功能,您可以查看以下示例:
- 异常处理程序中间件处理通过请求功能发生的异常 -https://github.com/aspnet/Diagnostics/blob/dev/src/Microsoft.AspNetCore.Diagnostics.Abstractions/IExceptionHandlerFeature.cs https://github.com/aspnet/Diagnostics/blob/dev/src/Microsoft.AspNetCore.Diagnostics.Abstractions/IExceptionHandlerFeature.cs.
- 路由中间件通过请求功能将路由数据添加到当前的http上下文 -https://github.com/aspnet/Routing/blob/dev/src/Microsoft.AspNetCore.Routing.Abstractions/IRoutingFeature.cs https://github.com/aspnet/Routing/blob/dev/src/Microsoft.AspNetCore.Routing.Abstractions/IRoutingFeature.cs
一般来说,这是一种将每个请求的行为和状态从服务器通过中间件传递到应用程序的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)