IIS7站点启动和处理请求的步骤如下:步骤1到6用于处理应用程序启动。启动后,以后就没必要走这一步了。
上图中的八个步骤如下:当客户端浏览器启动HTTP请求WEB服务器的资源时,HTTP.sys拦截该请求。Http.sys contacts从配置存储中获取信息,was从配置存储中心请求配置信息。applicationHost.config .WWW服务接收配置信息,配置信息是指类似的应用池配置信息、站点配置信息等。WWW服务使用配置信息来配置HTTP.sys处理策略。was为向其发出请求的应用程序池启动工作进程。工作进程处理请求并向http.sys返回响应。客户端接收到处理结果信息。如果我们在W3WP.exe进程中处理它呢?IIS 7应用程序池有两种托管管道模式:经典和集成。两种模式有不同的处理策略。作者:郭宏军http://blog.joycode.com/ghjIIS 6和IIS7经典模式下托管管道的架构在IIS7之前,ASP.NET是以IIS ISAPI扩展的形式加入到IIS中的,实际上包括了ASP和PHP。它们的配置方式都是一样的(PHP在IIS中采用两种配置模式,除了IIS ISAPI扩展模式外还包括CGI模式,系统管理员可以选择PHP程序的执行模式),所以客户端对IIS的HTTP请求会先通过IIS处理,然后IIS会根据需要的内容类型,如果是HTML静态网页,IIS会自己处理;如果不是,它将被分配给自己的IIS ISAPI扩展;根据所请求的内容类型来选择内容类型;如果请求的内容类型是aspnet,则分配给负责处理aspnet的IIS ISAPI扩展,即aspnet_isapi.dll,下图是这个架构的示意图。IIS 7应用程序池的经典托管管道模式也是这样工作的。这种模式与IIS 6兼容,以降低升级成本。
经典模式下配置的IIS6执行架构图和IIS7应用池执行架构图。