Refer:Introduction to HTTP Handlers
ASP.NET HTTP handler 是一个ASP.NET应用程序响应客户端请求的过程的“终端”。最常见的handler是处理.aspx文件的ASP.NET page handler。
ASP.NET程序通过文件的扩展名对handler做映射,当请求一个文件时,先在映射表里面找对应的handler,如果找到了,就把请求交给这个handler去处理。
我们可以在ASP.NET程序中,自定义一些handler,用来处理指定扩展名的文件。
HttpHandler 可以访问应用程序的上下文,包括用户的身份,应用程序的状态和会话信息。当一个handler被请求,ASP.NET会调用这个handler的ProcessRequest方法,这个方法中会构建一个返回给客户端的response。所有的handler处理结束后,返回的response会通过程序中配置的Http modules,然后会调用modules中定义的生命周期事件。
ASP.NET中内建的handler:
ASP.NET Page Handler(*.aspx)
Web service handler(*.asmx)
ASP.NET user control handler(*.ascx)
Teace handler(trace.axd)
自定义HTTP Handler
如果想在自己的ASP.NET程序中处理一些指定扩展名的文件,首先需要先在IIS的元数据库中把该文件的扩展名映射给ISAPI,这样子该文件就会被交给ASP.NET处理了。
然后在程序中定义一个类来实现IHttpHandler。
IHttpHandler包含了三个成员,IsResuable属性用来指定是否把IHttpHandlerFactory对象(程序实际调用的handler)放到Handler pool中,放到pool中的好处是handler可以重用,这样能够提升性能。ProcessRequest方法用来处理request,并且返回response。
然后在程序的web.config文件中的<system.web>节点下配置文件扩展名和自定义handler的映射