温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET中如何使用URL Rewrite组件

发布时间:2021-07-15 15:16:50 来源:亿速云 阅读:125 作者:Leah 栏目:编程语言

今天就跟大家聊聊有关ASP.NET中如何使用URL Rewrite组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

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

<httpModules> <add name="ModuleRewriter" type="URLRewriter.ModuleRewriter, URLRewriter" /> </httpModules>


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

<configSections> <section name="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> <section name="rewriter" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,  Intelligencia.UrlRewriter" /> </configSections> <rewriter> <rewrite url="^/User/(\d+)$" to="~/User.aspx?id=$1" processing="stop" /> <rewrite url="^/User/(\w+)$" to="~/User.aspx?name=$1" processing="stop" /> </rewriter> <system.web> <httpModules> <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,  Intelligencia.UrlRewriter" /> </httpModules> </system.web>

看完上述内容,你们对ASP.NET中如何使用URL Rewrite组件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI