当前位置:IT168首页 > 技术开发 > 概述
[收藏此页] [打印] [推荐] [评论]

采用HttpModules来重写URLs

责任编辑:nancy作者:ITPUB论坛   2008-07-11   
文本Tag: 微软 sql

【IT168技术文档】

  首先写一个处理URLs重写的类,并且这个类必须继承IHttpHandler接口,以博客园的程序为例:
public class UrlReWriteModule : System.Web.IHttpModule { public void Init(HttpApplication context) { context.BeginRequest +=new EventHandler(context_BeginRequest); } public void Dispose() { } }
  UrlReWriteModule类就是处理URLs重写的类,继承IHttpHandler接口,实现该接口的两个方法,Init和Dispose。在Init方法里注册自己定义的方法,如上例所示:

  content.BeginRequest +=new EventHandler(content_BeginRequest);

  BeginRequest是一个事件,在收到新的Http请求时触发,content_BeginRequest就是触发时处理的方法。另外说明一点,HttpModules能注册的方法还有很多,如:EndRequest、Error、Disposed、PreSendRequestContent等等。

  在content_BeginRequest方法中具体处理URLs重写的细节,比如,将 http://www.cnblogs.com/archive.aspx?user=rrooyy&id=56041 重写为 http://www.cnblogs.com/rrooyy/archive/2004/10/24/56041.。然后将重新生成的Url用HttpContext.RewritePath()方法重写即可,如下:
private void context_BeginRequest(object sender, EventArgs e) { HttpContext context = ((HttpApplication)sender).Context; // 获取旧的Url string url = context.Request.Path.ToLower(); // 重新生成新的Url string newUrl = ...; // 具体过程略 // 重写Url context.RewritePath(newUrl); }
  最后要web.config中注册重写URLs的类,格式如下:
<HTTPMODULES> <ADD type="classname,assemblyname" name="modulename"/> <REMOVE name="modulename"/> <CLEAR /> </HTTPMODULES>


上一页
1
下一页
收藏到: 添加到“百度搜藏”添加到“QQ书签”添加到“Google书签”添加到“Yahoo收藏”添加到“和讯网摘”
【内容导航】
本文欢迎转载,转载请注明:转载自IT168 [ http://www.it168.com/ ]
本文链接:http://tech.it168.com/d/2008-07-11/200807111310416.shtml
技术开发相关文章  
  • 暂无
友情推介