1.服务端的http.sys接收请求,它负责监听来自外部的HTTP请求,根据请求的URl将其转发给相应的应用程序池(application pool),当此HTTP请求处理完成时,它又负责把处理完成的结果发送出去,为了提供更好的性能,http.sys内部建立了一个缓冲区,将最近的HTTP请求保存起来.
2.http.sys收到请求后,将请求传给应用程序池的工作进程(inetinfo.exe)
工作进程接收到请求后,首先根据后缀找到并加载对应的ISAPI扩展 (如:aspx 对应的映射是aspnet_isapi.dll),工作进程加载完aspnet_isapi.dll后,由aspnet_isapi.dll负责加载 ASP.NET应用程序的运行环境即CLR (.NET Runtime)。
ISAPI:能够处理各种后缀名的应用程序
这个dll(aspnet_isapi.dll)是.net framework里面的,也就是说到这一步,请求进入了.net framework的管辖范围。
3.如果静态页面htmlIIS的工作进程可以立即处理,找到html页面返回客户端显示,但是如果是.aspx 或cshtml等页面,IIS不能直接处理,需要先加载aspnet_isapi.dll 应用程序
4.这个时候如果是WebForm,开始执行复杂的页面生命周期(HttpRuntime→ProcessRequest→HttpContext→HttpHandler);如果是MVC,则启动mvc的路由机制,根据路由规则为URL来指定HttpHandler
5.httpHandler处理请求后,请求结束,给出Response,客户端处理响应,整个过程结束。