采用HttpModules来重写URLs(实践篇)

哎注册太难了ok

哎注册太难了ok

2016-01-29 13:22

采用HttpModules来重写URLs(实践篇),采用HttpModules来重写URLs(实践篇)

首先写一个处理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/rrooyy/archive/2004/10/24/56041.html 重写为 http://www.cnblogs.com/archive.aspx?user=rrooyy&id=56041 (注:我没有仔细看DuDu的程序,这里只是举例而已)。然后将重新生成的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);
}
提醒:newUrl的格式不是http://www.infotouch.com/user/archive.aspx,而是从当前应用程序根目录算起的绝对路径,如:userarchive.aspx,这一点请特别注意。
最后要web.config中注册重写URLs的类,格式如下:





采用标签可以注册一个类;可以移除某个类,如果某个子目录不希望继承父目录的某个Http Module注册,就需要使用这个标签;可以移除所有的Http Module注册。
展开更多 50%)
分享

猜你喜欢

采用HttpModules来重写URLs(实践篇)

电脑网络
采用HttpModules来重写URLs(实践篇)

AJAX实践DWR篇

Web开发
AJAX实践DWR篇

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

采用XML数据来填充ASP表单

ASP
采用XML数据来填充ASP表单

采用 PEAR 来缓冲 PHP 程序(一)

PHP
采用 PEAR 来缓冲 PHP 程序(一)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

采用 PEAR 来缓冲 PHP 程序(二)

PHP
采用 PEAR 来缓冲 PHP 程序(二)

Linux字体安装与简单美化(实践篇)

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux字体安装与简单美化(实践篇)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash MX2004入门与进阶实例——绘图基础(17)

Flash MX2004入门与进阶实例——绘图基础(17)

实例解说:用Perl来分析并生成中文Excel文件

实例解说:用Perl来分析并生成中文Excel文件
下拉加载更多内容 ↓