你有没有想过,当用户打开浏览器,输入网址,回车,然后浏览器上就会出现网站的内容,在这个过程中,是怎么的一个过程呢!
当请求一个*.aspx,*.html,*.jpg文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀为aspx之后,将这个请求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过(Http PipeLine将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端。
当Http请求进入 Asp.Net Runtime以后,它的管道由托管模块(Managed Modules)和处理程序(Handlers)组成,并且由管道来处理这个 Http请求。下面是在这个Http Runtime运行时中的处理请求的流程,如图:
inetinfo.exe进程:是www服务的进程,IIS服务和ASPNET_ISAPI.DLL都寄存在此进程中。
ASPNET_ISAPI.DLL:是处理.aspx文件的win32组件。其实IIS服务器是只能识别.html文件的,当IIS服务器发现被请求的文件是.aspx文件时,IIS服务器将其交给aspnet_isapi.dll来处理。
aspnet_wp.exe进程:ASP.NET框架进程,提供.net运行的托管环境,.net的CLR(公共语言运行时)就是寄存在此进程中。
Framework处理一个Http Request的流程:
HttpRequest
inetinfo.exe
ASPNET_ISAPI.dll
ASPNET_WP.exe
HttpRuntime
HttpApplication Factory
HttpApplication
HttpModule
HttpHandler Factory
HttpHandler
HttpHandler.ProcessRequest()
ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,ASP.NET把 http请求依次传递给管道中各个HttpModule,最终被HttpHandler处理,处理完成后,再次经过管道中的HTTP模块,把结果返回给客 户端。我们可以在每个HttpModule中都可以干预请求的处理过程。
本文转自博客园张占岭(仓储大叔)的博客,原文链接:开发人员应该对IIS理论层的知识了解的多一些~第三讲 网页从IIS端到客户端浏览器经历的阶段,如需转载请自行联系原博主。