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

或许现已没有人会运用上一篇ASP.NET文章中的办法进行URL Rewrite了,由于供给URL Rewrite组件早已漫山遍野了。

ASP.NET的URL Rewrite组件  URL ASP.NET 第1张

ASP.NET等级的URL Rewrite组件的原理很简单,其实仅仅监听BeginRequest事情,而且依据装备来决议方针URL。在我之前触摸过的项目中,发现运用URLRewriter作为URL Rewrite组件的频率十分高,我想或许是由于那是微软供给的东西吧。

假如要运用URLRewriter,首要天然便是在web.config中装备一个HttpModule:

  1. <httpModules>
  2. <addname="ModuleRewriter"type="URLRewriter.ModuleRewriter,URLRewriter"/>
  3. </httpModules>


然后便是进行装备了(注:强烈建议运用configPath特点将装备提取成额定的文件,便于管理):

  1. <configSections>
  2. <sectionname="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. <sectionname="rewriter"
  3. type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,
  4. Intelligencia.UrlRewriter"/>
  5. </configSections>
  6. <rewriter>
  7. <rewriteurl="^/User/(\d+)$"to="~/User.aspx?id=$1"processing="stop"/>
  8. <rewriteurl="^/User/(\w+)$"to="~/User.aspx?name=$1"processing="stop"/>
  9. </rewriter>
  10. <system.web>
  11. <httpModules>
  12. <addname="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
转载请说明出处
知优网 » ASP.NET的URL Rewrite组件

发表评论

您需要后才能发表评论