Http处理程序和HTTP模块
ASP.NET HTTP 处理程序是响应对ASP.NET Web 应用程序的请求而运行的过程。最常用的处理程序是处理.aspx文件的ASP.NET页处理程序。用户请求.aspx文件时,页通过页处理程序来处理请求。可以创建自定义的HTTP处理程序将自定义输出呈现给浏览器。过程如图所示:
HTTP模块是一个在每次针对应用程序发出请求时调用的程序集。HTTP模块作为ASP.NET请求管道的一部分调用,它们能够在整个请求过程中访问生命周期事件。HTTP模块使你可以检查传入和传出的请求并根据请求进行操作。
开发自定义HTTP处理程序和HTTP模块之前,应先了解IHttpHandler和IHttpModule接口,IHttpHandler和IHttpModule接口是开发处理程序和模块的起始点。IHttpAsyncHandler接口是开发异步处理程序的起始点。类图如下所示:
IHttpHandler.IsReusable属性:获取一个值,该值指示其他请求是否可以使用IHttpHandler实例。
IHttpHandler.ProcessRequest方法:通过实现IHttpHandler接口的自定义HttpHandler启用HTTP Web请求的处理。
ASP.NET根据文件扩展名将HTTP请求映射到HTTP处理程序。创建自定义HTTP处理程序,需创建一个实现IHttpHandler接口的类来创建一个同步处理程序,必须实现接口中包含的IsReusable属性和ProcessRequest方法。IsReusable属性指定IHttpHandlerFactory对象是否可以将处理程序放置在池中,并且重新使用以提高性能。如果处理程序不能放在池中,则在每次需要处理程序时工厂都必须创建处理程序的新实例。
自定义IHttpHandlerFactory类,IHttpHandlerFactory类接收请求并负责向相应的HTTP处理程序转发请求。你可以通过创建一个实现了IHttpHandlerFactory接口的类来创建自定义HTTP处理程序工厂。自定义处理程序工厂通过创建不同的基于运行时条件的处理程序,使你可以更好地控制对HTTP请求的处理方式。类图如下所示: