在ASP.NET中实现简单的URL重写
最近用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 中添加以下代码
{
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重写相关推荐
- asp.net 2.0 简单实现url重写
今天,群里有人问我关于Url重写的问题,想这重写,记得国庆期间看过相关文章,msdn介绍也看过,大概就三种方法,最常用的就是用微软提供的dll文件,今天,把我dll引用了一下,按着说明配置了一下文件, ...
- asp.net 使用UrlRewritingNet.UrlRewriter组件URL重写,伪静态详解
目录 URL重写的业务需求 ReWritingNet组件主要功能 配置IIS(IIS7/8环境下) 程序代码 重写规则 一,URL重写的业务需求 顾客可以直接用浏览器bookmark功能将页面连结储存 ...
- ASP.NET中 DataGrid简单自定义分页
先在pageload中添加事件 private void Page_Load(object sender, System.EventArgs e) { ...
- ASP.NET中Session简单原理图
转载于:https://www.cnblogs.com/ruishuang208/p/ASPNET%e4%b8%adSession.html
- 在 ASP.NET 中执行 URL 重写
在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...
- 在ASP.NET中UrlRewrite的实现(能隐藏扩展名)之一
摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重写.URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.讨论实现 URL 重写的各种技术,并介绍执 ...
- URL 重写的常见用法
URL 重写的常见用法 创建数据驱动的 ASP.NET 网站时,通常会产生一个单个的网页,该网页基于查询字符串参数显示数据库数据的子集.例如,在设计电子商务站点时,您的任务之一便是允许用户浏览待售产品 ...
- 技巧/诀窍:在ASP.NET中重写URL(转)
[原文地址]Tip/Trick: Url Rewriting with ASP.NET [原文发表日期] Monday, February 26, 2007 9:27 PM 经常有人请我指导应该如何动 ...
- 技巧/诀窍:在ASP.NET中重写URL
[原文地址]Tip/Trick: Url Rewriting with ASP.NET [原文发表日期] Monday, February 26, 2007 9:27 PM 经常有人请我指导应该如何动 ...
最新文章
- Ubuntu18.04 网络配置
- 北京理工大学python系列课程-北理工《Python语言程序设计》荣获中国最美慕课一等奖...
- linux查看mongo表大小,MongoDB_mongodb 查看数据库和表大小,1,查看数据库db.stats() - phpStudy...
- Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配、对应版本安装之详细攻略
- tampermonkey怎么不能用了_发现键盘数字小键盘不能用怎么办?
- Flutter-Cookbook 非官方翻译
- WORD常用版式保存为模板?
- 设计海报|字符海报怎么玩?
- X86平台下基于grub2+busybo+linux-2.6.36制作linux系统
- java中的内部类_Java中成员内部类的使用
- PostgreSQL数据库常用SQL语句
- 抖音时钟js css,JS+CSS3实现时钟效果(抖音)
- Dual Thrust(期货)
- unity中单位是米还是厘米_厘米和米都是什么单位
- 为什么c语言输出到文件慢,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
- gts测试提示 Test failed due to unrecognized service account for this product, please submit an initial G
- OM6621系列国产M4F内核低功耗BLE5.1大内存SoC蓝牙芯片
- 全国计算机二级等级考试报名官网入口
- 多元统计分析——数据降维——因子分析(FA)
- Xilinx MicroBlaze软核驱动DDR4
热门文章
- NodeJs安装和配置
- 2013计算机二级试题,计算机二级试题2013_12.doc
- linux下使用.csh脚本自动化下载GFS气象预报数据
- SAS学习之查找异常值
- 科研趣文 | 穿白衣服的就是好人?
- 干货分享 | HERMES 计算功能连接指标手册
- python 中文unicode编码
- java parentcomponent_java – 在Spring中继承@Component
- 自相关-能量密度谱,互相关-互能量密度谱,系统识别
- ADOBE ACROBAT XI PRO MULTI-XFORCE