基于Http管道技术的伪静态生成
IIS其实处理不了aspx网页,只是转交给aspnet_isapi.dll来处理,在此处理过程中,微软公开了两个非常重要的接口
IHttpHandler
IHttpModule
首先配置web.config (也可动态添加,参考《动态添加删除web.config节点》)
<httpHandlers>
<add verb="*" path="*.jtx" type="Web练习.MyHandler" validate="false" />
</httpHandlers>这里 verb表示 类型[get,put,post],*表示所有,path表示处理页面的后缀名是什么,type表示将这些后缀名的请求交付给"Web练习.MyHandler"这个类处理。
整体就是说,将后缀名为.jtx的网页交给MyHandler类来处理。
MyHandler处理类,是自定义的一个类,但要处理网页,就必须继承并实现IHttpHandler接口,如下
public class MyHandler: IHttpHandler
{#region IHttpHandler 成员
public MyHandler()
{
//默认构造器
}public bool IsReusable
{
get
{
return true;//这里不管,只要返回true就行了。
}
}public void ProcessRequest(HttpContext context)
{
HttpRequest Request = context.Request; //HttpContext 中包含两种信息 Request和Respones 其实就是请求和输出。
HttpResponse Respones = context.Response;//HttpContext 中包含两种信息 Request和Respones 其实就是请求和输出。
string urlPaht = Request.FilePath;
if (urlPaht.EndsWith("jtx"))//可以构造更复杂的判断过程在此拼接url字符串以及后缀名,输出html代码,生成网页。
{
Respones.Write("<br>请求*.jtx页面成功!</br>");//可以输出html代码,所以可以自己读取模板替换后输出
}}
#endregion
}
2009-11-04-13:27:59