本文介绍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:
- <httpModules>
- <addname="ModuleRewriter"type="URLRewriter.ModuleRewriter,URLRewriter"/>
- </httpModules>
然后便是进行装备了(注:强烈建议运用configPath特点将装备提取成额定的文件,便于管理):
- <configSections>
- <sectionname="RewriterConfig"
- type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>
- </configSections>
- <RewriterConfig>
- <Rules>
- <RewriterRule>
- <LookFor>~/tag/([\w]+)/</LookFor>
- <SendTo>~/Tags.aspx?Tag=$1</SendTo>
- </RewriterRule>
- </Rules>
- </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组件都差不多),咱们要做的也仅仅装备:
- <configSections>
- <sectionname="rewriter"
- type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,
- Intelligencia.UrlRewriter"/>
- </configSections>
- <rewriter>
- <rewriteurl="^/User/(\d+)$"to="~/User.aspx?id=$1"processing="stop"/>
- <rewriteurl="^/User/(\w+)$"to="~/User.aspx?name=$1"processing="stop"/>
- </rewriter>
- <system.web>
- <httpModules>
- <addname="UrlRewriter"
- type="Intelligencia.UrlRewriter.RewriterHttpModule,
- Intelligencia.UrlRewriter"/>
- </httpModules>
- </system.web>
【修改引荐】
- XML和ASP.NET
- ASP.NET中Java script中调用c#办法
- ASP.NET整个Postback程序处理的进程
- ASP.NET服务器端控件CheckBoxList
- 浅析ASP.NET的Membership
知优网 » ASP.NET的URL Rewrite组件