IIS处理asp.net请求和asp.net的页面生命周期
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-03-14
并根据配置信息加载相应的Assembly,通过Reflection创建对应的HttpModule,并将这些Module加到HttpApplication 的_moduleCollection Filed中。我们对一个Application的请求最终会落到一个HttpApplication对象上。当一个请求到来时,ASP.NET会在Httplication Pool中查找未被使用的HttpApplication对象。 3, 请求通过HTTP管道后,每个请求都发向相关的各自的httphandler,IIS请求处理过程结束。 HttpHandler是HTTP管道的终点,它为每个request生成输出。System.Web.UI.Page就是这样一个典型的Httphandler,当我们请求一个aspx页面,这个HttpHandler就生成html发送回客户端。看Page类的签名: public class Page : TemplateControl, IHttpHandler { } 可以看到,Page类就是一个HttpHandler。 综上整个过程就是:当客户端向服务器发送资源请求时,请求首先到达IIS的HTTP.SYS。然后HTTP.SYS发送请求道对应的Application Pool。 然后Application Pool发送请求到Worker Process(W3WP.exe)中加载ISAPI Extension,ISAPI创建一个HttpRuntime对象来通过HttpModule和HttpHandler处理请求。 然后页面生命周期就开始了。 4, 页面生命周期开始 页面生命周期的主要阶段包括: 页面初始化(Init): 服务器创建服务器控件的实例 加载(load): 控件实例被加载到它定义的页面对象中 预输出:(PreRender) 对控件的更改被更新,准备输出。 保存(SaveViewState): 控件的状态信息被保存。 输出页面(Render):服务器为控件创建html标记。 处理(Dispose): 主要做的工作就是dispose, 关闭数据库连接,文件资源的释放等。 卸载(Unload):销毁服务器控件的实例 页面生命周期的主要事件: PreInit: 1.检查IsPostBack 属性 2.动态设置Master Page 3.动态设置Theme 4.设置控件的默认值(UniqueId等) 5.重新创建动态控件(初始化控件),初始化控件的值 Init: 这个事件发生在所有的控件被初始化,所有的皮肤设置被应用以后。它用来读取或者初始化控件属性。它能够用来注册一些aspx页面中没有指出的控件的事件。 InitComplete: Use this event for processing tasks that require all initialization to be complete. PreLoad: 加载页面的ViewState和所有的控件,然后处理所有的包含在Request实例中的postback数据。 Load: 这个事件可能是大家最熟悉的了。需要注意的是,Page对象会递归的调用子控件的onload事件直到页面和所有的子控件被加载完成。这个事件主要用来设置控件属性的值,建立数据库连接(通常不这么做 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于IIS处理asp.net请求和asp.net的页面生命周期的所有评论