Asp.Net MiddleWare与HttpModules

Jua*_*gui 4 asp.net asp.net-mvc

从Asp.Net 5开始,我们现在有了"中间件"概念来改变请求和响应或与之交互.所有这些都是在使用HttpModules之前完成的.

所以这是我的问题.

什么是asp.net中间件以及该组件解决了哪些问题无法通过HttpModules解决?

Tus*_*har 7

HttpModules充当5.之前的ASP.NET版本中的请求过滤器.它们是可重用的代码单元,可以插入到请求管道中,并负责响应在HttpApplication类中触发的事件.

Middleware可以被看作既HTTP moduleshandlers我们已经在经典ASP.NET.一些中间件在处理诸如认证,会话状态检索和持久性,日志记录等请求时将实现各种中间任务.其中一些将是产生响应的最终请求处理程序.


问题2:这个组件解决了哪些问题无法通过HttpModules解决?

  • 在一个HttpModule,你必须根据要求的不同阶段来执行代码,事情如AuthenticateRequest, AuthorizeRequest,PostResolveRequestCache,等稍微容易混淆的命名事件.中间件不再是这种情况,现在的事情才有意义.一切都只是代码的线性执行.您可以定义多个中间件在应用程序中执行,并且每个中间件都在Startup.cs文件中明确注册.

  • 作为开发人员,您可以完全控制执行的内容以及执行顺序,而不是不知道哪些HttpModule正在执行,而不是真正控制其执行顺序.中间件可以简单地修改请求并继续调用链中的下一个请求,或者它可以只是终止管道并返回结果.

参考