ASP.NET Core中间件与HttpModule有何不同
前言
在ASP.NET Core中最大的更改之一是对Http请求管道的更改,在ASP.NET中我们了解HttpHandler和HttpModule但是到现在这些已经被替换为中间件那么下面我们来看一下他们的不同处。
HttpHandler
Handlers处理基于扩展的特定请求,HttpHandlers作为进行运行,同时做到对ASP.NET响应请求。他是一个实现System.Web.IHttphandler接口的类。任何实现IHttpHandler接口的类都可以作为Http请求处理响应的目标程序。
它提供了对文件特定的扩展名处理传入请求,
ASP.NET框架提供了一些默认的Http处理程序,最常见的处理程序是处理.aspx文件。下面提供了一些默认的处理程序。
| Handler | Extension | Description |
|---|---|---|
| Page Handler | .aspx | handle normal WebPages |
| User Control Handler | .ascx | handle Web user control pages |
| Web Service Handler | .asmx | handle Web service pages |
| Trace Handler | trace.axd | handle trace functionality |
创建一个自定义HttpHandler
在web.config中添加配置项
异步HttpHandlers
异步的话需要继承HttpTaskAsyncHandler类,HttpTaskAsyncHandler类实现了IHttpTaskAsyncHandler和IHttpHandler接口
HttpModule
下面是来自MSDN
Modules are called before and after the handler executes. Modules enable developers to intercept, participate in, or modify each individual request. Modules implement the IHttpModule interface, which is located in the System.Web namespace.
HttpModule类似过滤器,它是一个基于事件的,在应用程序发起到结束的整个生命周期中访问事件
