最近用ASP.NET写一个小网站程序,需要实现URL重写。在ASP.NET中实现URL重写算是一个古老的话题了,在微软的MSDN中也有文章专门讨论这个问题,文章地址为:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx,在微软的解决方法中,开发人员需要自己编程实现HTTP模块和HTTP处理程序,此外还要修改配置文件,虽然不复杂,但也要写一些代码。我是一个喜欢偷懒的程序员,而且对ASP.NET编程不很熟悉,网站又小,因此我想出了一个简单方法来实现URL重写。
    首先看看URL重写的目的,URL重写的最终目标就是把难懂的充满"&?"符号的带参数的URL地址改变成自然的易于人类理解的结构简单的URL地址。可以认为所有能达到这种结果的手段就是URL重写。
    比如一个页面地址“http://server/customers.aspx?region=地区名称” ,它显示的是指定地区的客户列表,用户直接输入 "http://server/customers/地区名称"的样式,则经过URL重写,它转换为 "http://server/customers.aspx?region=地区名称",例如客户端为 "http://server/customers/东北.aspx",服务器端最终执行的是"customers.aspx?region=东北",URL重写使得WEB应用程序的URL人性化,提高程序的用户可用性。
    但符号"/"是一个特殊字符,可以解释为操作系统目录分隔符,URL重写时可能需要对此有所判断,我不想判断,于是没有"/"符号,而采用其他的重写方式,比如用户输入"http://server/东北客户.aspx",则重写为"customers.aspx?region=东北",这样重写方式简单,程序判断起来也容易。不需要编程实现HTTP模块,无需修改配置文件,实现了customers.aspx 后,只要在 Global.asax 中添加以下代码

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    string name = base.Request.FilePath ;
    if( name != null )
    {
        int index = name.LastIndexOf('/');
        if( index >= 0 )
            name = name.Substring( index + 1 );
        index = name.LastIndexOf('\\');
        if( index >= 0 )
            name = name.Substring( index + 1 );
        index = name.LastIndexOf('.');
        if( index >= 0 )
            name = name.Substring( 0 , index );
        name = name.Trim() ;
        // 此处 name 就是请求地址的简单名称
        if( name.EndsWith("客户"))
        {
            name = name.Substring( 0 , name.Length - 2 );
            base.Context.RewritePath( "customers.aspx?region=" + System.Web.HttpUtility.UrlEncode( name ) );
            // 若使用 Response.Redirect 则会导致客户的IE地址栏输入的地址突变
            //base.Context.RewritePath( "customers.aspx?region=" + name , true );
        }
    }
}

这种方法只使用了几十行代码就实现了简单的URL重写,无需实现各种接口,无需修改配置文件,实在是方便,我的懒惰的欲望得到了满足。

不过这是一种简单的URL重写方法,只能处理简单的问题,若需要实现复杂的URL重写,则还是推荐大家看看微软提出的URL重写方案。

在此提供一个实现简单URL重写的ASP.NET演示程序下载(/Files/xdesigner/URLRewriteDemo.rar) 。这个演示程序需要注意,对于ASP.NET,若URL参数中包含中文则可能出现问题,需要修改web.config 中的 globalization 元素的 requestEncoding 属性值为 "gb2312" ,但若使用URL重写则不存在这种问题。

袁永福(http://www.xdesigner.cn) 2007-3-28

在ASP.NET中实现简单的URL重写相关推荐

  1. asp.net 2.0 简单实现url重写

    今天,群里有人问我关于Url重写的问题,想这重写,记得国庆期间看过相关文章,msdn介绍也看过,大概就三种方法,最常用的就是用微软提供的dll文件,今天,把我dll引用了一下,按着说明配置了一下文件, ...

  2. asp.net 使用UrlRewritingNet.UrlRewriter组件URL重写,伪静态详解

    目录 URL重写的业务需求 ReWritingNet组件主要功能 配置IIS(IIS7/8环境下) 程序代码 重写规则 一,URL重写的业务需求 顾客可以直接用浏览器bookmark功能将页面连结储存 ...

  3. ASP.NET中 DataGrid简单自定义分页

    先在pageload中添加事件         private void Page_Load(object sender, System.EventArgs e)         {          ...

  4. ASP.NET中Session简单原理图

    转载于:https://www.cnblogs.com/ruishuang208/p/ASPNET%e4%b8%adSession.html

  5. 在 ASP.NET 中执行 URL 重写

    在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...

  6. 在ASP.NET中UrlRewrite的实现(能隐藏扩展名)之一

    摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重写.URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.讨论实现 URL 重写的各种技术,并介绍执 ...

  7. URL 重写的常见用法

    URL 重写的常见用法 创建数据驱动的 ASP.NET 网站时,通常会产生一个单个的网页,该网页基于查询字符串参数显示数据库数据的子集.例如,在设计电子商务站点时,您的任务之一便是允许用户浏览待售产品 ...

  8. 技巧/诀窍:在ASP.NET中重写URL(转)

    [原文地址]Tip/Trick: Url Rewriting with ASP.NET [原文发表日期] Monday, February 26, 2007 9:27 PM 经常有人请我指导应该如何动 ...

  9. 技巧/诀窍:在ASP.NET中重写URL

    [原文地址]Tip/Trick: Url Rewriting with ASP.NET [原文发表日期] Monday, February 26, 2007 9:27 PM 经常有人请我指导应该如何动 ...

最新文章

  1. Ubuntu18.04 网络配置
  2. 北京理工大学python系列课程-北理工《Python语言程序设计》荣获中国最美慕课一等奖...
  3. linux查看mongo表大小,MongoDB_mongodb 查看数据库和表大小,1,查看数据库db.stats() - phpStudy...
  4. Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配、对应版本安装之详细攻略
  5. tampermonkey怎么不能用了_发现键盘数字小键盘不能用怎么办?
  6. Flutter-Cookbook 非官方翻译
  7. WORD常用版式保存为模板?
  8. 设计海报|字符海报怎么玩?
  9. X86平台下基于grub2+busybo+linux-2.6.36制作linux系统
  10. java中的内部类_Java中成员内部类的使用
  11. PostgreSQL数据库常用SQL语句
  12. 抖音时钟js css,JS+CSS3实现时钟效果(抖音)
  13. Dual Thrust(期货)
  14. unity中单位是米还是厘米_厘米和米都是什么单位
  15. 为什么c语言输出到文件慢,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
  16. gts测试提示 Test failed due to unrecognized service account for this product, please submit an initial G
  17. OM6621系列国产M4F内核低功耗BLE5.1大内存SoC蓝牙芯片
  18. 全国计算机二级等级考试报名官网入口
  19. 多元统计分析——数据降维——因子分析(FA)
  20. Xilinx MicroBlaze软核驱动DDR4

热门文章

  1. NodeJs安装和配置
  2. 2013计算机二级试题,计算机二级试题2013_12.doc
  3. linux下使用.csh脚本自动化下载GFS气象预报数据
  4. SAS学习之查找异常值
  5. 科研趣文 | 穿白衣服的就是好人?
  6. 干货分享 | HERMES 计算功能连接指标手册
  7. python 中文unicode编码
  8. java parentcomponent_java – 在Spring中继承@Component
  9. 自相关-能量密度谱,互相关-互能量密度谱,系统识别
  10. ADOBE ACROBAT XI PRO MULTI-XFORCE