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

当一个用户访问一个页面,实际是发送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. HTML5 Canvas 的事件处理---转

    DOM是Web前端领域非常重要的组成部分,不仅在处理HTML元素时会用到DOM,图形编程也同样会用到.比如SVG绘图,各种图形都是以DOM节点的形式插入到页面中,这就意味着可以使用DOM方法对图形进行 ...

  2. ios开发 AFNetworking的基本使用方法

    AFNetworking的基本使用方法 什么是GET请求? 如果只是单纯的下载数据, 使用GET请求 什么是POST请求? 特点:  请求的内容不会出现在URL网址中 向服务器发送用户名和密码, 或者 ...

  3. UISwitch 监听响应

    UISwitch *swh = [[UISwitch alloc]initWithFrame:CGRectMake(100,100, 50, 30)];        swh.on = YES;    ...

  4. GitHub+hexo to Blog

    title: GitHub+hexo to Blog date: 2014-12-26 09:44:53 tags: hexo, github --- 摘要 一直想要一个自己的博客,不过一直怯于对网站 ...

  5. entity framework 6 通用数据类

    原文  http://blog.csdn.net/laokaizzz/article/details/25730813 public class BaseDAL { string strConn = ...

  6. MySQL - 建库、建表、查询

    本章通过演示如何使用mysql客户程序创造和使用一个简单的数据库,提供一个MySQL的入门教程.mysql(有时称为“终端监视器”或只是“监视”)是一个交互式程序,允许你连接一个MySQL服务器,运行 ...

  7. ASP.NET MVC 4.0 学习4-Code First

    之前我們需要用到的數據,通過添加Entity實體數據模型把數據庫中需要的Database拉到項目中如下圖, 而就是Code First就是相對於這種處理數據的方法而言的 Code First更加準確的 ...

  8. 典型的DIV CSS三行二列居中高度自适应布局

    如何使整个页面内容居中,如何使高度适应内容自动伸缩.这是学习CSS布局最常见的问题.下面就给出一个实际的例子,并详细解释.(本文的经验和是蓝色理想论坛xpoint.guoshuang共同讨论得出的.) ...

  9. 利用fiddler录制脚本

    特性说明: 版本:V4.4 用途:将fiddler抓取的请求,导出为jmx格式,方便jmeter直接调用 新增功能: 1.在测试计划下,新增[HTTP请求默认值],内容为空,后续需将站点的IP和端口填 ...

  10. JS中各种宽度、高度、位置、距离总结

    1.window.screen 浏览器与屏幕的距离,screenX(screenLeft),screenY(screenTop) 2.window.scrollTo(x,y) 将纵向滚动条移动到相对于 ...