博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET运行时文字版

Posted on 2006-02-16 11:35  pxx  阅读(1062)  评论(1)    收藏  举报

1 web处理程序(iis) inetinfo.exe   asp.net应用程序 aspnet_wp.exe(iis5) w3wp.exe(iis6)
inetinfo.exe处理一个html请求(包括html页面、文本文件、jpeg 和 gif 图像等),如果是一个aspx请求,则将请求传递到aspnet_isapi.dll(多个请求就排队一个个来),再由aspnet_isapi.dll调用aspnet_wp.exe,对请求进行处理.同时aspnet_isapi.dll负责监测aspnet_wp.exe运行情况,当发现运行异常或挂起,则关闭aspnet_wp.exe.这样,不管asp.net应用出现什么问题,不会影响到web处理程序的运行.

2 aspnet_wp.exe创建HttpRuntime实例(每个AppDomain都有一个HttpRuntime类实例),HttpRuntime会初始化内部对象(比如Cache对象),同时创建上下文HttpContext类的实例,得到请求的http信息(比如HttpRequest).HttpRuntime实例通过HttpApplicationFactory工厂类维护一个HttpApplication池,当一个应用请求到达时,先检查有无可用的HttpApplication实例,如果没有,则根据global.asax创建并触发Application_OnStart事件.

3 一个请求的具体是由实现了IHttpHandler接口的类处理的,HttpApplication实例通过工厂类,根据machine.config文件中<httpHandlers>的定义实例化处理请求的类IHttpHandler定义了两个接口:IsReusable和ProcessRequest,每个特定处理的逻辑在ProcessRequest中定义.

4 如果是一个aspx请求,程序会加载一个命名为ASP.****_aspx的类,程序会先搜索全局程序集缓存 (GAC)、Bin和C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files文件夹,如果没有找到则会在C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files文件夹下创建一个随机命名的dll.

大致的流程是这个样子,有什么不对的请大家指正.
以上流程基于.net framework 1.1