经典文章索引
从底层了解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 把返回的数据输出到管道,触发处理请求后的事件
浙公网安备 33010602011771号