ASP.NET的URL Rewrite组件

开发 后端
本文介绍ASP.NET级别的URL Rewrite组件的原理很简单,其实只是监听BeginRequest事件,并且根据配置来决定目标URL。

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

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

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

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


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

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

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

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

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

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

【编辑推荐】

  1. XML和ASP.NET
  2. ASP.NET中Java script中调用c#方法
  3. ASP.NET整个Postback程序处理的过程
  4. ASP.NET服务器端控件CheckBoxList
  5. 浅析ASP.NET的Membership
责任编辑:佚名 来源: IT168
相关推荐

2009-07-22 14:23:39

URL RewriteASP.NET

2009-01-04 13:27:10

URL RewriteIISASP.NET

2009-09-24 09:26:22

ASP.NET MVC

2009-07-31 09:58:20

URL映射ASP.NET

2009-08-05 13:16:43

ASP.NET URL

2009-07-31 09:39:59

ASP.NET和URL

2009-08-05 14:46:17

ASP.NET url

2009-08-10 13:32:15

ASP.NET TimASP.NET组件设计

2009-07-23 16:28:20

URL映射ASP.NET 2.0

2009-08-05 16:53:14

ASP.NET组件设计

2009-08-10 10:19:47

ASP.NET组件设计

2009-08-10 14:08:15

ASP.NET服务器控ASP.NET组件设计

2009-07-31 13:06:53

CheckBoxLisASP.NET页面

2009-08-10 16:07:44

ASP.NET Lin

2009-08-10 15:42:33

ASP.NET Che

2009-10-26 15:55:43

URL Routing

2009-07-22 17:45:35

ASP.NET教程

2009-07-20 15:48:10

OWC组件ASP.NET 2.0

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述
点赞
收藏

51CTO技术栈公众号