为了记忆深刻:我用文字再叙述一遍
1.浏览器将请求的信息封装成Http协议报文,发送给服务器。
2.IIS负责监听80端口,接受浏览器的报文,如果是静态文件,从服务器找到静态文件转换成 byte[] 然后通过代理socket响应给 浏览器。
3.如果是动态文件 IIS处理不了 交给aspnet_isapi.dll扩展,扩展将请求交给 .NetFramework的CLR中处理(即asp.net生命周期)。
第二步
IIS的核心进程inetinfo.exe交给aspnet_isapi.dll
扩展启动CLR(workProcess进程是,aspnet_wp.exe(xpIIS5),w3wp.exe(IIS6,IIS7))的AppDomain交给ISAPIRuntime 交给一般处理程序的ProcessRequest方法处理完成后返回给aspnet_isapi.dll 最终响应给浏览器
第三步
ISAPIRuntime.ProcessRequest 通过ecb句柄创建HttpWorkRequest(封装的是报文头) 调用HttpRuntim.PR()根据ecb句柄创建HttpContext
从HttpApplicationFactory拿到HttpApplication 然后走23个管道事件