浅析ASP.NET url重写
创始人
2024-04-25 08:51:42
0

好久没有写技术文章,如果大家看不明白,就多看几篇,汗,或者,在文章的后面回复(这是最有效的办法),我会尽力帮助大家解答疑惑。

来找这篇文章的,应该都知道什么叫二级域名吧,废话就不说了。但是讨论前,先要明白一个思想问题。很多朋友一直考虑不清(我前几天也一直搞不明白)的问题是,我键入一个地址后,怎么这个就被ASP.NET url重写了?

***步:在浏览器键入了一个地址,比如http://love.kerry.com,点回车后,都发生了什么?为了把问题简单化,我来这样解释
第二步:首先,键入的地址被解析,最终来到了一台web服务器。交给IIS处理。在ASP.NET的世界中,IIS会把这样的请求再交给一个web处理器 处理,***,该 web处理器 把处理的结果返回给浏览器,显示给用户看。

请不用忽略这样一个问题,第二步的所有事情都是在服务器端做的。在这些事情进行的时候,用户端的浏览器上面的地址不会改变。即使*** web处理器 把处理结果返回来的时候,上面的地址也不会改变。一开始键入的url,只是起一个敲门的作用,门敲完了,作用就算结束了,只有你的眼睛可以看到那个地址,浏览器,服务器等都不知道这个地址。然后要明白的问题是,所谓ASP.NET url重写,也只是web开发人员知道的内幕情况,用户根本不知道发生了什么,他认为自己键入的地址就是应该出来屏幕上显示的结果。也就是说,我们在幕后控制要显示的内容。接下来要考虑的是,怎么样控制显示的内容?

从上面说的过程,很明显要在 web处理器 的工作这一步动手脚。

一个最简单的考虑是,用户敲入了一个简单的不带任何参数地址, http://love.kerry.com然后我们把这个地址改成一个符合程序需要的带参数的地址, http://kerry.com?lover=notus,***处理之。

所谓的ASP.NET url重写,就是在这一步。用.net的术语来说,我们需要给应用程序注册一个httpmodule,用来处理特定的url注册httpmodule,在web.config,处理url,在我们提供的httpmodule程序中大体相当于这样的一段程

  1. //用我们的httpmodule程序截获原始url  
  2. String OriginalUrl=” http://love.kerry.com”;  
  3. //处理原始url,得到***需要的url,值为http://kerry.com?lover=notus 
  4. String FinalUrl=Rewrite(OriginalUrl);  
  5. // context重新将url在内部发送给IIS处理  
  6. context.RewritePath(FinalUrl); 

接下来,我们来实现ASP.NET url重写。
***步:确定要对哪些url执行重写,即制定重写规则
第二步:编写httpmodule处理程序
第三步:将编写的httpmodule整合入web程序,开始工作。

上面就是ASP.NET url重写的基本知识,而用ASP.NET url重写实现二级域名,过程一样。因为无论是二级域名还是三级域名,都是一个url地址。只要我们截获这个url地址,就可以在处理的时候动手脚。

在实施过程中会碰到一些问题,大多是因为看上面的文章不仔细产生的,但是说实话,那么长的文章要看完也不容易。下面我来记录一些重要的问题。其中***的两个问题,用具体的代码展示了如何处理重写的目标url以达到我们的要求

为什么非要用泛解析?
看了好多朋友的回复,我想现在可能有这样的误解,即,这篇关于ASP.NET url重写的文章只是给大家介绍一些处理方法。至于泛解析不泛解析,并不重要。

如果你不需要实现任意二级域名,那就用不着去实现泛解析,直接把你需要的二级域名定死,然后在ASP.NET url重写里处理好了!再退一步,如果连二级域名都不用实现,仅仅是对一个固定域名下的url进行重写,那都不需要修改msdn的那个urlrewriter,直接拿来用就可以实现了简单的ASP.NET url重写。 zyw对这个项目进行的修改,只是为了取到全部的url进行更大限度的控制。而如我们所见,一开始msdn的那个urlrewriter并不关心域名的问题,我一开始给文章起这样的题目,是因为最近我项目里用到了,写文档的时候顺便就把这个文章写了

【编辑推荐】

  1. ASP.NET开发技巧之Theme功能浅析
  2. 详解ASP.NET动态编译
  3. Apache支持ASP.NET方法浅析
  4. 浅谈ASP.NET服务器标准控件
  5. ASP.NET中SQL Server数据库备份恢复浅析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...