笔记:如果不对,欢迎指出来。

当一个用户访问一个页面,实际是发送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生命周期的更多相关文章

  1. ASP.net 页面生命周期

    ASP.NET 页面生命周期 Page_Preinit(); 在页初始化开始时发生 Page_Init(); 在所有控件初始化且应用外观设置后引发 Page_InitComplete(); 在页初始化 ...

  2. ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理

    ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...

  3. asp.net MVC 应用程序的生命周期

    下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html       ...

  4. [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说

    Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...

  5. [转]ASP.NET应用程序生命周期趣谈(四) HttpHandler和页面生命周期

    在之前的三篇文章中,我们还算简明扼要的学习了asp.net的整个生命周期,我们知道了一个Request进来以后先去ISAPI Filter,发现是asp.net程序后又ASPNET_ISAPI.dll ...

  6. [转]ASP.NET应用程序生命周期趣谈(三) HttpModule

    在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpM ...

  7. [转]ASP.NET应用程序生命周期趣谈(一)

    这几天一直在看ASP.NET应用程序生命周期,真是太难了,我理解起来费了劲了,但偏偏它又是那么重要,所以我希望能给大家带来一篇容易理解又好用的文章来帮助学习ASP.NET应用程序生命周期.这篇就是了. ...

  8. asp.net页面生命周期

    Asp.Net页面生命周期 本文转载自:http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html 一.什么是Asp.Net页面生命周期 当 ...

  9. 【译】ASP.NET应用程序和页面生命周期

    为何翻译此文 一.此文是Code Project社区2010年4月ASP.NET板块的最佳文章,说明了此文的份量: 二.锻炼自己的英文技术文章翻译能力,提高英文技术文档阅读能力: 三.了解掌握ASP. ...

随机推荐

  1. UIDeviceOrientation UIInterfaceOrientation 区别

    UIDeviceOrientation      是机器硬件的当前旋转方向   这个你只能取值 不能设置 UIInterfaceOrientation   是你程序界面的当前旋转方向   这个可以设置 ...

  2. NSBundle 类

    NSBundle NSBundle继承于NSObject,NSBundle是一个程序包,其中包含了程序会使用的资源(图像,声音,编辑好的代码,nib文件). 一. 初始化NSBundle + (ins ...

  3. 已知TSP问题的最好解

    a280 : 2579ali535 : 202339att48 : 10628att532 : 27686bayg29 : 1610bays29 : 2020berlin52 : 7542bier12 ...

  4. 添加jar

    file->project structure->'+'添加jar 在.gradle中配置

  5. HibernateTemplate用法

    private HibernateTemplate hibernateTemplate; 使用HbernateTemplate HibernateTemplate提供持久层访问模板化,使用Hibern ...

  6. phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。

    工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...

  7. haproxy之配置文件解析

    功能--> 提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点. 配置文件解析--> #配置文件-->开启/proc/net/ipv4 ...

  8. 磁盘管理二-LVM相关内容

    1.基本概念 LVM:logical volume manager 逻辑卷管理器 LVM构成:物理卷PV,卷组VG(PE物理区域,最小存储单元),逻辑卷LV(LE逻辑区域,最小存储单元) 三者如下图所 ...

  9. Discuz!X2.5论坛在IIS和Apache环境配置实现伪静态

    最近在研究自己的网站,然后把这文章分享出来,让不清楚怎么设置的童鞋参考,高手可以飘过~~~ URL 静态化是一个有利于搜索引擎的设置,通过 URL 静态化,达到原来是动态的 PHP 页面转换为静态化的 ...

  10. 在Cocos2d-X中新建Android项目

    Windows下创建Cocos2d-X的Android项目并不复杂,关键是要改几个环境变量 一.进入Cocos2d-X主目录修改“create-android-project.bat” 大家都知道要点 ...