服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

采用HttpModules来重写URLs


发布日期:2019年07月17日
 
采用HttpModules来重写URLs

首先写一个处理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>

上一篇:HTTP协议的chunked编码

下一篇:httpModules与httpHandlers