每当创建一个新的.aspx文件,实际上是创建一个心得page派生类,作为一个请求的终点,即处理程序。
为了在管道中起到处理程序的作用,一个类必须实现IHttpHandler接口。
public interface IHttpHandler
{
void ProcessRequest(HttpContext ctx);
bool IsReusable{get;}
}
page类实现该接口,而且在它的processRequest方法的实现中,通过生成页面中包含的所有控件来填充响应缓冲区。创建一个心得.aspx文件时,唯一关心的是页面上创建控件,而页面又是由page基类在合适的时候生成的。
假设我们要创建一个接受get请求的简单的计算器处理程序,它用一个附属的查询字符串提供参数和操作,如下:
http://localhost/test/test.idc?a=3&b=4&op=add
为了实现该自定义处理程序,应该按照一下步骤执行:
1.创建一个新类(calcHandler类),用于实现IHttpHandler接口。
public class calcHandler:IHttpHandler
{
public calcHandler()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void ProcessRequest(HttpContext cx)
{
int a = int.Parse(cx.Request["a"]);
int b = int.Parse(cx.Request["b"]);
switch (cx.Request["op"])
{
case "add":
cx.Response.Write(a + b);
break;
case "sub":
cx.Response.Write(a - b);
break;
case "mul":
cx.Response.Write(a * b);
break;
default:
cx.Response.Write("operator is erroe");
break;
}
}
public bool IsReusable
{
get
{
return true;
}
}
}
2.使asp.net意识到,希望calcHandler类作为向应用程序发出的以test.idc为终点的任何get请求的终点,为此,需要在配置文件的httpHandlers元素中增加一个配置项,如下:
<system.web>
<httpHandlers>
<add verb="GET" path="test.idc" type="calcHandler,calcHandler"/>
</httpHandlers>
</system.web>
3.让iis知道,把一个给定扩展的请求映射到asp.net工作者进程。
点击iis中网站的属性/主目录,点配置,在映射选项卡下add/edit给定映射。如图:
联系客服