asp生命周期
笔记:如果不对,欢迎指出来。
当一个用户访问一个页面,实际是发送http请求到服务器,而http请求其实是socket发送特定规范(协议)的文字(报文)。
然后服务器的http.sys内核模块接受 请求,放在请求队列中。
IIS中有两个服务,一个IISADMIN,一个W3SVC服务,当http.sys接受到请求时,会通知w3svc。
然后w3svc会确认下有没有应用程序池,如果没有启动,会启动应用程序池,通知应用程序池,应用程序池会让w3wp.exe工作进程去拿一个请求,如果请求的页面时静态的就会处理直接返回。
如果是.aspx等结尾的动态页面,则会交给aspnet_isapi.dll去处理,它会吧请求交给ISAPIRuntiome函数,执行函数的PR方法,在内部中会吧ecb句柄转成HttpWorkRequest对象,随后转给HttpRuntime,执行它的RP方法,她会把HttpWorkRequest转化成HttpContext。
然后通过HttpApplicationFactory获取一个HttpApplication实例
如果是第一次请求,会找到gloable文件,把他编译成类型,调用application_start方法。
通过HttpApplication池获取一个HttpApplication对象。
如果HttpApplication池未空,则通过gloable文件编译的类型反射出一个实例。
然后就以HttpApplication来负责 管道运作。(二十多个步骤,十九个事件)
第一个和最后一个分别是beginrequest和endrequest事件。
会在第七和第八个事件中根据请求地址创建页面对象,或者一般处理程序对象。
在第九个事件和第十个事件之间会根据cookie中的sessionID加载session状态。
在第十一个事件和第十二个事件中会执行页面对象或者是一般处理程序的pr方法。
如果是一般处理程序,就直接执行了。
如果是页面的话,就开始进入页面的生命周期了。
第一步:是创建页面控件树(控件上没有对应的数据)。
第二步:会确定IsPostBack属性值。
第三步:然后进入初始化。
第四步:再加载viewstate(将viewstate上的数据进行base64解密,并放在对应的内容上),处理回发数据,找到对应改变了的控件和被点击的控件。
第五步:执行preLoad事件,执行page_load事件,由于在load事件中可能会做操作,所以还会进行第二次处理回发数据
第六步:触发控件的改变事件。触发点击事件。结束加载
第七步:预渲染(PreRender)是最后改变页面控件状态的机会。
第八步:保存页面状态,把当前页面状态放入viewstate中。
第九步:渲染,把整个aspx页面渲染成html的过程。
第十步:卸载.
asp生命周期的更多相关文章
- ASP.net 页面生命周期
ASP.NET 页面生命周期 Page_Preinit(); 在页初始化开始时发生 Page_Init(); 在所有控件初始化且应用外观设置后引发 Page_InitComplete(); 在页初始化 ...
- ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...
- asp.net MVC 应用程序的生命周期
下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html ...
- [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说
Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...
- [转]ASP.NET应用程序生命周期趣谈(四) HttpHandler和页面生命周期
在之前的三篇文章中,我们还算简明扼要的学习了asp.net的整个生命周期,我们知道了一个Request进来以后先去ISAPI Filter,发现是asp.net程序后又ASPNET_ISAPI.dll ...
- [转]ASP.NET应用程序生命周期趣谈(三) HttpModule
在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpM ...
- [转]ASP.NET应用程序生命周期趣谈(一)
这几天一直在看ASP.NET应用程序生命周期,真是太难了,我理解起来费了劲了,但偏偏它又是那么重要,所以我希望能给大家带来一篇容易理解又好用的文章来帮助学习ASP.NET应用程序生命周期.这篇就是了. ...
- asp.net页面生命周期
Asp.Net页面生命周期 本文转载自:http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html 一.什么是Asp.Net页面生命周期 当 ...
- 【译】ASP.NET应用程序和页面生命周期
为何翻译此文 一.此文是Code Project社区2010年4月ASP.NET板块的最佳文章,说明了此文的份量: 二.锻炼自己的英文技术文章翻译能力,提高英文技术文档阅读能力: 三.了解掌握ASP. ...
随机推荐
- <modules runAllManagedModulesForAllRequests="true" />(转1)
最近在使用 MVC 开发的时候,遇到一个对我来说“奇怪的问题”,就是使用 BundleTable 进行 CSS.JS 文件绑定,然后使用 Styles.Render.Scripts.Render 进行 ...
- struts2 404处理
目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat.希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的 ...
- UVA 221 - Urban Elevations(离散化)!!!!!!
题意:给出一张俯视图.给出N个建筑物的左下标,长度,宽度,高度.现在求,从南面看,能看到那些建筑? Sample Input 14 160 0 30 60 30 125 0 32 28 60 95 0 ...
- tomcat7.0的源码下载
如果想知道servlet的HttpServlet的实现细节,想知道jsp的org.apache.jasper.runtime.HttpJspBase的实现细节,想知道tomcat关于servlet和j ...
- php 查看文档
http://www.runoob.com/php/php-datatypes.html php 学习网站 : http://www.phpfans.net/
- Knight Moves(BFS,走’日‘字)
Knight Moves Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- checkbox选中问题
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...
- HttpApplication处理对象与HttpModule处理模块 (第三篇)
一.HttpApplication对象简述 在HttpRuntime创建了HttpContext对象之后,HttpRuntime将随后创建一个用于处理请求的对象,这个对象的类型为HttpApplica ...
- C# 父子类_实例_静态成员变量_构造函数的执行顺序
今天去面试的时候被一道题问得一点脾气都没有,今天特地来研究下. 子类成员变量,子类静态成员变量,子类构造函数,父类成员变量,父类静态成员变量,父类构造函数的执行顺序. 现在贴上从另外一个.net程序员 ...
- scheme I/0 输入输出操作
2.1. open-input-file, read-char, and eof-object? The function (open-input-file filename) is availabl ...