经典文章索引

从底层了解ASP.NET体系结构
(原创)IIS6.0架构
IIS的各种身份验证详细测试
Inside WCF Runtime
Enterprise Library 3.1中文文档

 

从IIS到HTTP处理器的事件序列:

l        IIS得到一个请求

l        查询脚本映射扩展,然后把请求映射到aspnet_isapi.dll文件

l        代码进入工作者进程(IIS5里是aspnet_wp.exe;IIS6里是w3wp.exe)

l        .NET运行时被加载,根据请求创建(第一次请求此虚拟目录)指定虚拟目录的AppDomain和相关的ISAPIRuntime实例

l        非托管代码aspnet_isapi.dll异步调用IsapiRuntime.ProcessRequest([In] IntPtr ecb, [In, MarshalAs(UnmanagedType.I4)] int useProcessModel)方法

  备注:ecb参数指向非托管资源,完成后ISAPI扩展会被通知请求已经结束,让它知道ECB可以被释放了

l        每一个ecb请求创建一个ISAPIWorkerRequest(继承于HttpWorkerRequest,HttpWorkerRequest围绕着底层的接口提供了高层的抽象,就不用考虑数据的来源)

.

l        使用WorkerRequest调用HttpRuntime.ProcessRequest()方法

l        通过传递进来的WorkerRequest创建一个HttpContext对象

l         通过把上下文对象作为参数传递给HttpApplication.GetApplicationInstance(),然后调用该方法,从应用程序池中获取一个HttpApplication实例。

l        调用HttpApplication.Init(),钩住模块和处理事件(global中定义)、初始化各个步骤。

 

l        调用HttpApplicaton.ProcessRequest,开始处理请求

l        触发管道事件

l        调用HTTP处理器和ProcessRequest方法

l        把返回的数据输出到管道,触发处理请求后的事件

posted on 2007-10-25 14:04  tianxd  阅读(267)  评论(0)    收藏  举报

导航