IIS URL重写模块和ASP.NET路由组件比较

随着针对IIS 7.0的URL重写模块的发布,以及在.NET框架3.5 SP1中包含了ASP.NET路由(Routing),许多ASP.NET开发人员开始质问这两种特性彼此间的关系,以及应该何时使用。

Ruslan Yakushev在LearnIIS.NET上发表了一篇很有指导意义的文章。

二者本质的区别在于:IIS URL重写的处理方式比ASP.NET路由在层次上更低,对于客户端是不可见的。

Ruslan给出了IIS 7 URL重写过程的可视化工作流。你可以看到URL重写模块是在请求被传递到请求处理器(Handler),例如ASP.NET管理的ASPX处理器之前被激活的。IIS URL重写并不知道具体的请求处理器。

他同时还给出了ASP.NET路由过程的可视化工作流。可以看到ASP.NET路由就是一个请求分发器,它必须明确地获知一个特定的请求究竟应途经哪个处理器。

来自Ruslan的描述如下:

URL重写通常被用于在Web服务器处理请求之前操作URL路径。URL重写模块并不知道处理器实际处理URL重写的任何内容。此外,实际的请求处理器并不知道URL是否已被重写。

ASP.NET路由通常根据请求的URL路径将请求分发到处理器。与URL重写相反,路由组件知道处理器,并能够选择可以为请求的URL生成反应的处理器。你可以将ASP.NET路由看作是一个高级的处理器映射机制。

IIS URL重写模块能够用于任何类型的Web应用程序,包括ASP.NET,PHP,ASP和静态文件。ASP.NET路由只能用于基于.NET框架的Web应用程序。

在用于应用程序池方面,不管是集成的还是经典的IIS管道模式,IIS URL重写模块的工作方式都是相同的。而ASP.NET路由则会优先选择使用集成管道模式。ASP.NET路由也可以工作于经典模式,但是在这种情况下,应用程序的URL必须包含文件扩展名,或者应用程序必须在IIS中使用“*”配置处理器。

URL重写模块可以根据域名、HTTP标头和服务器变量进行重写判断。默认情况下,ASP.NET路由只能使用URL路径以及标头的形式。

除了重写功能,URL重写模块能够执行HTTP重定向,确定自定义状态码以及取消请求。ASP.NET路由则不具有这些功能。

URL重写模块在当前版本中是不能扩展的。ASP.NET路由完全能够扩展和定制。

时间: 2025-01-21 10:41:33

IIS URL重写模块和ASP.NET路由组件比较的相关文章

iis url重写 或者转发实现二级域名定向子目录的问题

问题描述 iis url重写 或者转发实现二级域名定向子目录的问题 用的是iis自带的url重写 生成web.config如下: <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpErrors errorMode="Detailed" /> <rewrite> <rules&

URL重写及干掉ASP.NET试图状态的实现方法_实用技巧

1.URL重写已经很普遍了,但基本上大部分的URL重写都不支持页面的相对路径,所有如果想在已经开发好的项目中添加还是有压力的,第二就是例如微软的那个URL重写是根据正则表达式来处理的,那样是很好,但也有不足之处,就是不方便定位到某个页面只能有哪些参数. 我觉得要解决的问题有一下几个: 1.解决如图片js等不能使用相对路径的文件 2.解决某个页面能有几个参数和哪些参数是可选的 下面就是解决掉这些问题了 添加处理程序MyHttpModule,下面是我的一个简单的处理程序(我只是做了一个简单的,并没有

跳楼求救,关于IIS URL重写分页问题

问题描述 我现在用IonicsIsapiRewriteFilter(iirf)iisurl重写,碰到情况是用aspnetpage分页控件没办法分页,只会跳到第一个页面,请大侠门救救小弟,谢谢! 解决方案 解决方案二:该回复于2012-04-05 10:40:05被版主删除解决方案三:大侠们求救啊解决方案四:救命啊解决方案五:IonicsIsapiRewriteFilter(iirf)怎么写301重定向,我现在碰到问题是google收入同一个页面多次,并且地址不一样,导致网站出问题,现在要将不同的

Nginx模块参考手册:URL重写模块(Rewrite)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块允许使用正则表达式重写URI(需PCRE库),并且可以根据相关变量重定向和选择不同的配置.如果这个指令在server字段中指定,那么将在被请求的location确定之前执行,如果在指令执行后所选择的location中有其他的重写规则,那么它们也被执行.如果在location中执行这个指令产生了新的URI,那么location又一次确定了新的URI.这样的循环可以最多执行10次,超过以后nginx将返回5

IIS URL Rewriting和ASP.NET routing(下)

在IIS URL Rewriting 和 ASP.NET routing(上)中,我们针对IIS URL Rewriting 和 ASP.NET routing的理念和功能分别进行分析并进行对比,在清楚 了这些基本原理和异同之后,我们该如何在应用中挑选合适的URL优化方案呢? 在本文中,我们将对此进行探讨分析,并例举几种两者协同应用的案例. 我们该如何选择? 首先,如果我们的Web应用程序有任何除了ASP.NET之外的动态网页技术,那 么选择是绝对明显的:用IIS URL重写模块(IIS URL

艾伟_转载:IIS URL Rewriting 和 ASP.NET routing(上)

新版本URL-rewrite module for IIS 7.0的发布了,ASP.NET Routing组件随着.NET Framework 3.5 SP1的发布,并在.NET Framework 4.0 Beta中进一步成熟.作为ASP.NET 开发人员,我们不免会对这两个功能相近的组件抱有许多疑问,诸如"它们有什么异同?""分别适用于什么环境?"等等.本文旨在描述这两者之间的异同,并为开发人员提供什么时候使用哪一种解决方案的建议. 从表面上看来,这两种技术似乎

艾伟_转载:IIS URL Rewriting 和 ASP.NET routing(下)

在IIS URL Rewriting 和 ASP.NET routing(上)中,我们针对IIS URL Rewriting 和 ASP.NET routing的理念和功能分别进行分析并进行对比,在清楚了这些基本原理和异同之后,我们该如何在应用中挑选合适的URL优化方案呢?在本文中,我们将对此进行探讨分析,并例举几种两者协同应用的案例. 本文翻译自IIS官方网站,针对国内惯用的术语进行了部分调整. 我们该如何选择? 首先,如果我们的Web应用程序有任何除了ASP.NET之外的动态网页技术,那么选

IIS URL Rewriting 和 ASP.NET routing(上)

新版本URL-rewrite module for IIS 7.0的发布了,ASP.NET Routing组件随着.NET Framework 3.5 SP1的发布,并在.NET Framework 4.0 Beta中进一步成熟.作为ASP.NET 开发人员,我们不免会对这两个功能相近的组件抱有许多疑问,诸如"它们有什么异同?""分别适用于什么环境?"等等.本文旨在描述这两者之间的异同,并为开发人员提供什么时候使用哪一种解决方案的建议. 从表面上看来,这两种技术似乎

IIS URL Rewriting 和 ASP.NET routing(下)

在IIS URL Rewriting 和 ASP.NET routing(上)中,我们针对IIS URL Rewriting 和 ASP.NET routing的理念和功能分别进行分析并进行对比,在清楚了这些基本原理和异同之后,我们该如何在应用中挑选合适的URL优化方案呢?在本文中,我们将对此进行探讨分析,并例举几种两者协同应用的案例. 本文翻译自IIS官方网站,针对国内惯用的术语进行了部分调整. 我们该如何选择? 首先,如果我们的Web应用程序有任何除了ASP.NET之外的动态网页技术,那么选