asp.net框架

asp.net2.0时代,当clientIIS请求 *.aspx文件时,请求也同上面一样被inetinfo.exe进程截获,inetinfo.exe判断文件的后缀之后,将这个请求转交给aspnet_isapi.dll,(你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下找到该文件),而aspnet_isapi.dll则会通过一个名为HttpPipeLine的管道,将这个请求发送给aspnet_wp.exe进程,(你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下找到该文

 

图很明了,三个椭圆,不,应该是四个,第一个是asp.net的运行环境,当请求到达www服务inetinfo.exe后,经过aspnet_isapi.dll筛选之后,请求这才真正进入aspnet_wp.exe进程,也就是httpRuntime,之后系统会加载一系列的HttpModule,那么我们就来看看系统到底加载了哪些模块。先定位到“C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"CONFIG“,怪了,这个目录很是熟悉,是的,这是.net系统配置文件machine.config所在的目录。不过我今天要找的不是他,而是web.config,这是.net专门给web独立定义connfig文件,没错,web.cofig也在此目录中。

       打开web.config文件后,大家可能很郁闷,这么多的数据,怎么看呢!大家别急,都知道web.config

 <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>

遇到.aspx页面,httpRuntime把请求传递到System.Web.UI.PageHandlerFactory。

    只喜欢和美女聊天的男人,决不是好男人。我们可以把HttpRuntime看成一位美女。既然她是美女,那当然要研究研究了。HttpRuntime到底是什么呢?她不是一个实体,而是执行asp.net的一个抽象的大环境,记住这点很重要。我们来具体看看HttpRuntime到底是怎样执行的?当http请求进入httpRuntime之后,这个请求会被继续被送入到一个名为HttpApplication Factory的工厂中,工厂为这个http请求生成一个HttpApplication的实例,随后这个实例被送到HttpModule容器中,随后http请求继续送到HttpHandler Factory工厂,

这个工厂也会生成一个HttpHandler的实例,这个实例的processRequire方法处理传进来的请求,然后把处理好的结果和控制权交给HttpModule容器,HttpModule容器再把从HttpHandler实例处理好的数据流回发到clinet端的浏览器,这样一个Http请求的完美生命周期就结束了。

记住,真正处理Http请求的地方在HttpHandler实例的processRequire方法中,而到最后回发数据流到client端的地方是HttpModule容器中。

 

原文地址:https://www.cnblogs.com/haomo/p/2583239.html