我们都知道,当用户在浏览器地址栏中输入网址时,该请求会被IIS服务器捕获,如果是请求的是静态页面则由IIS本身处理并直接返回客户端;如果是动态页(*.aspx),通过一系列的前期的处理来到 .NET 运行时,然后交给 Aspnet_ispai.dll 处理,处理完成后返回处理结果。请求和处理过程可以分为:HttpRuntime → HttpModule → HttpApplicationFactory → HttpApplication → HttpHandlerFactory → HttpHandler → HttpModule → 将请求结果返回到客户端。
下面我们通过单步调式跟踪System.Web.Dll源码来分析各个过程中关键处理函数:
1、首先进入管道运行时中的托管入口函数