IIS5 到 IIS6 的改进,主要是 HTTP.sys 的改进。
IIS6 到 IIS7 的改进,主要是 ISAPI 的改进。
IIS7.0和6.0的处理过程的主要区别在于asp.net如何与IIS服务器实现集成,在IIS6.0中有两个请求处理管道,其中一个管道式本地代码
ISAPI FILTERS 和扩展组件,另外一个是管道是托管代码应用组件,如asp.net.
在IIS7.0中,asp.net运行时集成WEBSERVER,所以有一个针对所有请求的统一请求处理管道,对于asp.net开发者来说,集成管道的主要优点如下:
1、集成管道触发HttpApplication对象暴露的各个事件,同时asp.net的http module可以在IIS7.0集成模式下工作等
IIS7.0 集成管道是一个统一请求处理管道,支持本地代码和托管代码模块,托管代码模块实现IHttpModule接口,可以访问请求管道里面的所有事件。
asp.net 在IIS6 中是ISAPI extensions扩展组件形式存在,而在IIS7中成为核心部分,可以处理各种请求(包含托管代码和非托管代码)
在经典模式下,IIS会用ISAPI扩展(ISAPI extension aspnet_isapi.dll)和 ISAPI过滤器(ISAPI filter aspnet_filter.dll)来调用ASP.NET运行库来处理请求。如果使用经典模式的话,服务器会用两种管道来处理请求一个负责源代码,另外一个负责托管代码。在这种模式下,应用程序不能充分使用IIS7.X提供的服务。
集成模式是一种统一的请求处理管道,它将ASP.NET请求管道与IIS核心管道组合在一起。在集成模式下,ASP.NET从IIS插件(IIS extension)的角色进入了IIS的核心去监测每个请求和操作。在集成模式下,ASP.NET能更有效的在IIS下运行,并且可以有效的提高网站的性能。
IIS7.0中运行的应用程序的web.config文件同时包含web服务器和ASP.NET配置设置,例如可以再web.config文件中设置扩展名和文件的映射(IIS6.0中必须在IIS中进行配置)。
web.config文件的变化
system.webServer节指定了应用于web应用程序的IIS7.0设置,其父节点是configuration,该节点中可以设置的内容包括:
1、当请求未包含指定资源时,Web服务器返回给客户端的默认文档(defaultDocument);
2、响应的压缩设置(httpCompression)
3、自定义头部(httpProtocol节的customHeaders)
4、模块(modules)
5、处理程序(handlers)
其中的一些设置仅适用于集成模式,而不适用于经典模式,如经典模式下运行的应用程序则忽略web.config的system.WebServer节中指定的所有托管代码模块和处理程序,经典模式下web应用程序应该在syste.web节的httpModules和httpHandlers中定义模块和处理程序。
iis7.5 集成模式 和经典模式web.config配置注意
需要将经典模式下的: