整体请求图详解
①浏览器通过网络访问服务器,由服务器软件接受请求。
②服务器软件IIS发现处理不了后缀是ASXH的文件,就通过映射表将请求转给了服务器扩展程序中的一个ASP.NET_ISAPI.DLL的程序。
③可扩展程序只是一个桥梁,又将请求交给网站程序,网站程序调用HttpRuntime的静态方法处理请求。
④有HttpRuntime类完成所有的请求工作
4.1分析请求报文,将请求报文数据封装到一个叫做HttpWorkRequest类对象对应的属性中。
4.2通过调用HttpApplicationFactory类的一个静态方法,创建HttpApplication对象时,每次HttpApplicationFactory都会到HttpApplication池里找,如果没有空闲的HttpApplication对象,将创建新的对象,如果有就直接拿来用。
4.3创建HttpContext对象,此对象是请求上下文的环境,里面包含处理请求的所有参数数据,其中最重要的就是HttpRequest和HttpResponse两个类的对象。
4.3.1 HttpRequest主要包含了所有的请求信息,这些信息来源于HttpWorkRequest包含的属性,Form(客户表单数据)QueryString(客户端URL参数)
4.3.2 HttpResponse主要包含了FileStream对象,用来保存页面类执行过程中输出给浏览器的数据。
4.4因为在HttpApplication中里面要运行被请求页面对象里的ProcessRequest方法,所以需要将HttpContext传到HttpApplication中。HttpApplication的ProcessRequest方法执行过程中可以看做成一个管道,要先后执行19个委托事件,在执行第8个事件时,创建请求页面类的对象,在第11和12个事件之间,执行了被执行页面类的ProcessRequest方法。