在用Asp.net开发一些大的Web应用程序时,通常会用到自定义HttpHandlers,因为这比用标准的.aspx页面能够提高5-10%的性能。 HttpHandler主要是用来处理Request和Response的,其实Asp.net基类System.Web.UI.Page也实现了IHttpHandler接口。
具体的实现过程是,首先定义一个类来实现IhttpHandler接口,如下:
public class Writer : IHttpHandler {
public void ProcessRequest(HttpContext oContext)
{
oContext.Response.Write("");
oContext.Response.Write("");
oContext.Response.Write("");
oContext.Response.Write("");
oContext.Response.Write("");
oContext.Response.Write("");
oContext.Response.Write("Test box value");
oContext.Response.Write("");
oContext.Response.Write("");
oContext.Response.Write("");
}
public bool IsReusable { get { return true; } }
}
然后再编译成Dll文件,并把这个Dll文件添加到WebApplication的项目引用中,修改Web.Config的内容,添加一个HttpHandler,
说明:
• verb可以是"GET"或"POST",表示对GET或POST的请求进行处理。"*"表示对所有请求进行处理。
• Path指明对相应的文件进行处理,"*.aa"表示对发给所有ASPX页面的请求进行处理。可以指明路径,如"/test/*.aa",表明只对test目录下的ASPX文件进行处理。
• Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。
然后再IIS中添加程序映射,这样所有发给/test/*.aa的请求都会被我们定义的Handler截获。