属性名 | 描述 |
Application | 每一个application的request信息 |
Application Instance | 正在处理request请求的Application对象 |
Cache | 每一个application的缓存信息 |
Handler | 正在处理request请求的Handler对象 |
Items | 每一个request请求信息 |
Request | HTTP request 信息 |
Response | HTTP response 信息 |
Server | Utility functions |
Session | Per-user cross-request state |
User | User information |
HTTP请求---> HTTP.SYS程序处理HTTP请求,判断请求是否在服务器的缓存区----> 如果缓存没有,则进入IIS ----> IIS首先判断是何种类型的文件,根据文件调用相应的程序---->如果是ASP.NET程序,则调用工作进程w3wp.exe(IIS7以上)装载asp_isapi.dll程序集----->asp_isapi.dll加载CLR环境,创建APPDomain,创建HOSTEnviment对象----->创建ISAPIRunTime对象----->ISAPIRuntime将HTTPWorkRequest对象传递给---->HTTPRuntime---->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler->HttpHandler.ProcessRequest()
HttpModule
负责监听HttpRequest,同时对HttpRequest增添或者过滤掉一部分内容。也就是说,当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。
HttpHandler
当一个HTTP请求经同HttpModule容器传递到HttpHandler容器中时,ASP.NET Framework会调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理。
以一个ASPX页面为例,正是在这里一个ASPX页面才被系统处理解析,并将处理完成的结果继续经由HttpModule传递下去,直至到达客户端。
对于ASPX页面,ASP.NET Framework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。所谓一个HttpHandlerFactory,所谓一个HttpHandlerFactory,是指当一个HTTP请求到达这个HttpHandler Factory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。
一个HTTP请求都是最终交给一个HttpHandler容器中的ProcessRequest方法来处理的