ASP.NET的URL Rewrite组件
创始人
2024-04-21 07:20:21
0

可能已经没有人会使用上一篇ASP.NET文章中的方法进行URL Rewrite了,因为提供URL Rewrite组件早已铺天盖地了。

ASP.NET级别的URL Rewrite组件的原理很简单,其实只是监听BeginRequest事件,并且根据配置来决定目标URL。在我之前接触过的项目中,发现使用URLRewriter作为URL Rewrite组件的频率非常高,我想可能是因为那是微软提供的东西吧。

如果要使用URLRewriter,首先自然就是在web.config中配置一个HttpModule:

  1.  
  2.  name="ModuleRewriter" type="URLRewriter.ModuleRewriter, URLRewriter" /> 
  3.  
  4.  


然后就是进行配置了(注:强烈建议使用configPath属性将配置提取成额外的文件,便于管理):

  1.  
  2.  name="RewriterConfig" 
  3. type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> 
  4.  
  5.  
  6.  
  7.  
  8. ~/tag/([\w]+)/ 
  9. ~/Tags.aspx?Tag=$1 
  10.  
  11.  
  12.  

正则表达式是一个非常了不得的东西,能匹配,能捕获。在上面的例子中,我们把符合LookFor条件的“/tag/xxx”重新定位到 Tags.aspx页面上,并且将xxx作为Tag这个QueryString项的值,这样就能够在代码中通过 HttpContext.Request.QueryString["Tag"]来获得该值了。

URL Rewriter的功能对于大多数应用来说已经足够了,但是我总是不喜欢。但如果非要问我不喜欢的原因,我也难说出个子丑寅卯来。可能仅仅是这个配置方式的问题吧。在使用 URL Rewriter时,配置段往往会非常长,每个配置项需要从共4 行代码,一个规模不大的项目都很容易出现上百行的配置。“这也太XML了”,我想,为什么不用XML Attribute呢?这样每个配置项就能缩短为1行了——不过,这是ASP.NET题外话。

所以如果我目前要做URL Rewrite,往往用的是Intelligencia出品的开源组件Url Rewriter.NET。虽然这个名字和前一个非常相似,但是功能却远超前者。该组件在使用上和URL Rewriter比较接近(其实似乎所有的URL Rewrite组件都差不多),我们要做的也只是配置:

  1.  
  2.  name="rewriter" 
  3. type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,  
  4. Intelligencia.UrlRewriter" /> 
  5.  
  6.  
  7.  url="^/User/(\d+)$" to="~/User.aspx?id=$1" processing="stop" /> 
  8.  url="^/User/(\w+)$" to="~/User.aspx?name=$1" processing="stop" /> 
  9.  
  10.  
  11.  
  12.  name="UrlRewriter" 
  13. type="Intelligencia.UrlRewriter.RewriterHttpModule,  
  14. Intelligencia.UrlRewriter" /> 
  15.  
  16.  

【编辑推荐】

  1. XML和ASP.NET
  2. ASP.NET中Java script中调用c#方法
  3. ASP.NET整个Postback程序处理的过程
  4. ASP.NET服务器端控件CheckBoxList
  5. 浅析ASP.NET的Membership

相关内容

热门资讯

如何允许远程连接到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...