上一篇:常用ASP。NET技巧 >>
采用HttpModules来重写URLs(实践篇)
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,而是从当前应用程序根目录算起的绝对路径,如:user\archive.aspx,这一点请特别注意。
最后要web.config中注册重写URLs的类,格式如下:
<HTTPMODULES>
<ADD type="classname,assemblyname" name="modulename"/>
<REMOVE name="modulename"/>
<CLEAR />
</HTTPMODULES>
采用<ADD>标签可以注册一个类;<REMOVE>可以移除某个类,如果某个子目录不希望继承父目录的某个Http Module注册,就需要使用这个标签;<CLEAR />可以移除所有的Http Module注册。
下一篇:在 ASP.NET 中执行 URL 重写 >>
相关文章:
- · 在ASP.Net 中使用实现windows登陆的方法
- · 在ASP.NET中动态加载内容(用户控件和模板)
- · ASP.net组件编程中的两种事件编写方法
- · ASP.NET事件小探讨
- · asp.net连接Access数据库
- · [ASP.net(C#)]自定义数据库操作类(一)
- · asp.net 中用户和角色的验证
- · 在.NET中调用Oracle9i存储过程经验总结
- · 枚举类型的用法
- · Tag属性的妙用
- · 怎样得到文本框(TextBox)中的文本行数
- · ASP.NET IIS 注册工具 (Aspnet_regiis.exe)
- · 在Asp.net中部署和使用微软的TreeView控件
- · Word编程中,事件的作用和顺序
- · 关于大型网站的构架问题
- · ASP.NET中上传文件的方法(一)
- · 坚持学asp.net——(十二)
- · 在ASP.NET中跨页面实现多选
- · Securing an ASP.Net application...
- · Send Email and Attachments with ASP.Net...
- · asp.net中的多語言使用
- · 網頁中彈出對自定義對話框並進行傳值
- · 將 ASP .NET WebForm 的 DataGrid 中的資料 匯出至 Microsoft Excel
- · ASP.NET中树形图的实现
- · 细细品味ASP.NET
- · ASP.NET中制作图形
- · ASP.NET常用函数
- · ASP.NET开发经验(2) --- ASP.NET中的一些图形处理
- · ASP.NET域名查询系统
- · [我的ASP.net学习历程]有关于.dll文件的迷惑
- · 自己动手写屏保
- · 实现性能目标的几种方法
- · Asp.Net 使用 GDI+ 绘制3D饼图入门篇源码
- · [我的ASP.net学习历程]调用类库函库的简单加密方法
- · ASP.NET 在域控制器上使用默认 ASPNET 帐户不能正常运行!
- · 坚持学asp.net——(十一)
- · 排序算法
- · 坚持学asp.net——(十)
