首先写一个处理URLs重写的类并且这个类必须继承IHttpHandler接口以博客园的程序为例
public class UrlReWriteModule : SystemWebIHttpModule
{
public void Init(HttpApplication context)
{
contextBeginRequest +=new EventHandler(context_BeginRequest);
}
public void Dispose()
{
}
}
UrlReWriteModule类就是处理URLs重写的类继承IHttpHandler接口实现该接口的两个方法Init和Dispose在Init方法里注册自己定义的方法如上例所示
contentBeginRequest +=new EventHandler(content_BeginRequest);
BeginRequest是一个事件在收到新的Http请求时触发content_BeginRequest就是触发时处理的方法另外说明一点HttpModules能注册的方法还有很多如EndRequestErrorDisposedPreSendRequestContent等等
在content_BeginRequest方法中具体处理URLs重写的细节比如将 x?user=rrooyy&id= 重写为 然后将重新生成的Url用HttpContextRewritePath()方法重写即可如下
private void context_BeginRequest(object sender EventArgs e)
{
HttpContext context = ((HttpApplication)sender)Context;
// 获取旧的Url
string url = contextRequestPathToLower();
// 重新生成新的Url
string newUrl = ; // 具体过程略
// 重写Url
contextRewritePath(newUrl);
}
最后要nfig中注册重写URLs的类格式如下
<HTTPMODULES>
<ADD type=classnameassemblyname name=modulename/>
<REMOVE name=modulename/>
<CLEAR />
</HTTPMODULES>