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

2016-01-29 13:22 14 1 收藏

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

【 tulaoshi.com - ASP.NET 】


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

来源:http://www.tulaoshi.com/n/20160129/1489944.html

延伸阅读
最近谈论较多的就是Datagrid,特别新手最是郁闷为何没有更好的控件,来满足自已的需求。 其实通过重写可以达到很多不同的功能体验,在这里我们仅仅讨论关于datagridcolumnstyle重写的问题 ========================================== Power by: landlordh Datatime: 2005-08-04 转载请注明出处,谢谢 ========================================...
标签: Web开发
很长一段时间,我都使用12px作为网站的主要字体大小。10px太小,眼睛很容易疲劳,14px虽容易看清,却破坏页面的美感。唯独12px在审美和视力方面都恰到好处。 谁对我的网站字体大小有意见? 我老爸,他是第一个向我反映看不清我的网站文字的人。这使我意识到12px,其实只是让我觉得很不错而已,而对于那些视力下降明显的中年以上的人来讲,几...
标签: Java JAVA基础
  在 Internet众多网站中,基于Web数据库的动态网站应用相当广泛。基于Web网络数据库的动态网站由一个Web浏览器作为客户端界面,一个数据库服务器用做信息存储和一个连接两者的 Web应用服务器组成。原有开发动态网站的CGI技术,随着Web应用程序的客户端技术不断地发展,逐渐被Java Applet、ActiveX控件、DHTML和JavaScript所取代。这些技...
标签: 电脑入门
所有的PPT设计和写作最终要应用到我们的实际工作中,今天,与大家分享一些PPT设计的心得,应用的是我们公司策划的实际案例,由于具体内容 涉及我公司工作,不提供下载,还请见谅。只希望大家看了之后有所收获,改变疯狂下载的陋习,好的PPT需要更多的思考、策划、设计,再多的素材要懂得应用 才能发挥作用(PPT模板素材下载可以到http:///moban/...
C 编程最佳实践 原文地址:[url]http://www-900.ibm.com/developerWorks/cn/Linux/l-bppc/index.sHtml[/url] [size=18:db26774567][b:db26774567]简介 风格与指南 其它 结束语 参考资料[/b:db26774567][/size:db26774567] Shiv Dutta(sdutta@us.ibm.com ),技术顾问,IBM Gary Hook(ghook@us.ibm.com)...

经验教程

208

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部