发表主题回复主题
2/10‹‹1››

asp.net 实现urlrewrite的三种方法!!!

yjjie

UID:123

只看楼主   ¦        #1
  • 等级:0级
  • 昵称:我是大爷
  • 组别:普通会员
  • 积分:11
  • 金币:4

1、Global.asax:也是最简单的。在Global.asax.cs中有个protected void Application_BeginRequest(Object sender, EventArgs e)函数,
用正则取得用户请求URL中的“自定义”请求参数。而后用重定向
例子:

void Application_BeginRequest(Object sender, EventArgs e)
    {
        String oldUrl
= System.Web.HttpContext.Current.Request.RawUrl;
        String pattern = @"^(.+)/test4/(d+).aspx/(w+)";
        String replace
=@"~/test4.aspx?NID=$1&id=$2&uid=$3";
        
if(Regex.IsMatch(oldUrl,pattern,RegexOptions.IgnoreCase | RegexOptions.Compiled))
        {
            String newUrl
=Regex.Replace(oldUrl,pattern,replace,RegexOptions.Compiled| RegexOptions.IgnoreCase);
            Context.RewritePath(newUrl);
        }
    }

2、HttpModules 实现:
这个实现和1的原理是一样的。
我做了个项目例子,给代码太乱,自己去下吧:下载地址

3、HttpHandler 实现:
这个不是真正的Urlrewrite ,其实是把请求截获后,直接用自己的handler工厂类定向到自己的page类,所以这个方式可以实现没有.aspx文件
用.aspx文件其实是微软给的handler工厂类实现的,现在我们自己写这个工厂类。可以想像如果你的站没有.aspx文件,那什么扩展名都无所谓了,主要保证你的请求是被.net 来执行的就行
我也写了个例子,很简单的,自己去下啦:下载地址

发现都有不足之处,希望和大家讨论讨论


Time: 07-09-15 15:58

Welcome !!
http://www.simpleness.com.cn
http://www.csdtn.net

 
暂时空缺
›› 举报 ¦ 奖励 ¦ 引用 ¦  TOP   

wltc888

UID:2527

      #2
  • 等级:4级
  • 昵称:星期八
  • 组别:普通会员
  • 积分:392
  • 金币:417

简单发的我认识
我也有好多好东西来下载啊
http://www.chinaitbbs.com.cn/board-5.aspx
 
›› 举报 ¦ 奖励 ¦ 引用 ¦  TOP   
发表主题回复主题
2/10‹‹1››