在阅读了有关asp.net核心中间件的知识之后,我感到困惑了,什么时候应该使用过滤器,什么时候应该使用中间件,因为它们似乎实现了相同的目标。什么时候应该使用中间件代替装配工?
Answers:
在第9频道上有一个有关此视频: ASP.NET Monsters#91:中间件与过滤器。总结视频:
请求的执行开始,我们有了一个中间件和另一个中间件,就像“娃娃里面的俄罗斯娃娃”一样,最终路由中间件开始运行,然后请求进入MVC管道。
因此,如果您不需要MVC的上下文(例如,您担心流程和执行,例如响应标头的某些预路由机制等),则可以使用中间件。
但是,如果您需要MVC的上下文并且要针对操作进行操作,则可以使用过滤器。
middleware
MVC上下文在管道中变得可用之前,执行。也就是说,例如在ActionFilter的情况下,middleware
不能访问ActionExecutingContext
或ActionExecutedContext
。您真正可以访问的是HttpContext
,它将使您能够对请求以及响应执行操作。由于尚未发生模型绑定,因此使用中间件不适合运行验证功能或修改值。Middleware
也会在每个请求上运行,无论调用哪个控制器或动作。
另一方面,filters
除非您在启动时全局注册过滤器,否则它将仅在指定的操作和控制器上运行。由于您具有对上下文的完全访问权限,因此您还可以访问控制器和操作本身。
来源和示例:dotnetcultist.com