ASP.NET中URL Routing和IIS上URL Rewriting的区别(2)

Routing是托管代码模块,是在Resolve Cache周期( PostResolveRequestCache事件)里注册,然后在MapHandler周期内处理的。在PostResolveRequestCache事件里,该模块查询静态集合routing表里的所有记录里声明的URL匹配规则,如果当前URL对应到了一个匹配的Handler,然后就使用该Handler处理结果并输出。
两者之间的不同

URL Rewrite是在request处理之前修改相应的URL,URL Rewrite模块本身不知道哪个HttpHandler处理这个请求,并且处理请求的HttpHandler也不知道自己处理的URL是原来的URL还是被重写过的地址。
    和URL Rewrite正好相反,URL Routing是根据规则为URL来指定HttpHandler的,可以看做Routing是handler的高级映射。
    IIS URL Rewrite可以用于任何web程序的映射处理,包括但不限于asp.net,php,asp和静态文件等,但Routing只能处理基于.net的web程序。
    IIS URL Rewrite在IIS集成模式和经典模式都可以用,但默认情况下Routing只能用在集成模式下,经典模式的话需要使用扩展名或者通配符将程序映射到IIS上(其实.net有另外一个组件aspnetfilter已经帮我们做好了)。
    IIS URL Rewrite可以根据域名,路径,Http Header,server变量等处理重写规则,但Routing只能按照请求的URL路径和HTTP-Method header来处理。
    IIS URL Rewrite可以执行处理HTTP跳转,处理自定义的Status Code以及Abort请求,但Routing做不到这些。
    IIS URL Rewrite的扩展只能扩展自己的Provider来自定义规则的存储,但Routing的扩展相对来说就非常强大了,MVC就是其中一种。

总结

两者之间有这么多不同,那我们到底该用哪一个呢?

如果你的程序是用asp.net之外的平台构建的,那你只能使用IIS URL Rewrite了,否则,我们建议的规则是:

如果你在用asp.net构建新的asp.net web程序,那就使用Routing,因为现在Routing不仅支持MVC了,也支持web form了。
    如果你的asp.net web form程序已经是现成的了,并且不想修改了,那就使用URL Rewrite,它可以帮你改善搜索引擎优化。

当然,你也可以两者结合起来一起用,但是用之前一定要记得上面的图里所说明的内容:他们的执行周期不一样。

参考地址:

以上这篇ASP.NET中URL Routing和IIS上URL Rewriting的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjyxfz.html