Asp.Net复习篇之Asp.Net生命周期与Asp.Net页的生命周期
Asp.Net生命周期与Asp.Net页的生命周期是一个比较重要的话题,有时可能似乎知道一些,但又说不出个所以然,而且时常把这两个概念混淆。现在也是该好好理清思路,把这两个概念搞懂。
Asp.Net生命周期
Asp.Net应用程序生命周期以浏览器向Web服务器(IIS)发送请求为起点。Web服务器接收到请求时,会对所请求文件的文件扩展名进行检查,确定应该由哪一个ISAPI扩展(Asp.Net是Web服务器下的一个ISAPI扩展)来处理请求,并传递给它(这里指Asp.Net)。Asp.Net处理已映射到其上的文件扩展名(.aspx,.ascx,ashx,asmx…)。
当Asp.Net接收到应用程序中任何资源的第一个请求时,ApplicationManager这个类会创建一个应用程序域,并创建HostingEnviroment这个类的实例来提供有关应用程序的信息。
Asp.Net会为每个请求创建并初始化核心对象(HttpContext,HttpRequest,HttpResponse)。
Asp.Net初始化所有核心对象之后,将通过创建HttpApplication类的实例来启动应用程序,如果应用程序有Global.asax文件,则Asp.Net会创建Global.asax类的一个实例,并使用该派生类来表示应用程序。
最后由HttpApplication管线来处理请求。
总结
Asp.Net生命周期大致由五大阶段构成:分别是:发出请求,接受请求,为每个请求创建核心对象,将HttpApplication对象分配给请求,由HttpApplication管线处理请求。
应用程序域
应用程序域是由CLR强制的一个边界,用来保证应用程序不受其他程序的影响。
Asp.Net页面的生命周期
Asp.Net页面运行时,此页面也会经历一个生命周期,在生命周期中将会执行一系列处理步骤。了解页面生命周期是非常重要的,因为这么做你就能够在生命周期的合适阶段编码。此外,如果你要开发自定义控件,就必须熟悉页面的生命周期,以便正确进行控件的初始化。一般来说,一个Asp.Net页面要经历下面几个阶段:
1.浏览器提出请求
浏览器提出请求发生在页面生命周期开始之前。浏览器请求页,Asp.Net将确定是否需要分析和编译页,或者是否可以在不运行页的情况下发送页的缓存版本。
2.页面框架初始化 Page.Init
Asp.Net在这个阶段开始创建页面,它产生你在.aspx页面里用标签定义的所有的控件。此外,如果页面是一次回送(POST),Asp.Net将反序列化视图状态信息并把它们应用到所有控件上。Page.Init事件被触发。
3.用户代码初始化 Page.Load
不管页面是Get请求还是POST请求,Page.Load事件会被触发。
4.验证
在验证期间,将调用所有控件的Validate方法,此方法将设置各个验证控件和页面的IsValid属性。
5.事件处理
在这个阶段,页面已经被完全装载且通过验证,Asp.Net将会触发在上次回发后发生的所有事件。
6.呈现
在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,会调用每个控件的Render方法。在这个阶段,页面和控件对象任然可以用,因此可以执行一些最终步骤.
7.清除
在这个阶段,页面开始执行清除工作,并触发Page.UnLoad事件,此时页面对象虽然还可以使用,但是最终的HTML已经被呈现且不可以修改。
Asp.Net复习篇之Asp.Net生命周期与Asp.Net页的生命周期的更多相关文章
- ASP.NET 2.0 页(Page)生命周期概述
原文:ASP.NET 2.0 页(Page)生命周期概述 引用MSDNASP.NET 页生命周期概述 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初 ...
- ASP.NET页面生命周期和asp.net应用程序生命周期
作为一个asp.net程序员,不了解ASP.NET页面生命周期和asp.net应用程序生命周期是绝对不行的,那永远只能是菜鸟级别.我很早就学过,可是没次还是得去翻,一些事件还是记不住,还是记在自己的b ...
- HTTP -> Asp.net (第一篇)
当用户在浏览器输入一个URL地址后,浏览器会发送一个请求到服务器.这时候在服务器上第一个负责处理请求的是IIS.然后IIS再根据请求的URL扩展名将请求分发给不同的ISAPI处理. 流程如下: 1.I ...
- [转帖]2016年的文章: 解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介
解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介 更新时间:2016年06月23日 11:38:00 作者:汤姆大叔 我要评论 https://www.jb ...
- 【asp.net core 系列】 1 带你了解一下asp.net core
0. 前言 这是一个新的系列,名字是<ASP.NET Core 入门到实战>.这个系列主讲ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我们需要的即可,并非主讲).同 ...
- ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式,或将 AspNetCompatibil ...
- 在Asp.Net的Global.asax中Application_Error跳转到自定义错误页无效的解决办法
在开发Asp.Net系统的时候,我们很多时候希望系统发生错误后能够跳转到一个自定义的错误页面,于是我们经常会在Global.asax中的Application_Error方法中使用Response.R ...
- 【ASP.NET Web API教程】1.1 第一个ASP.NET Web API
Your First ASP.NET Web API (C#)第一个ASP.NET Web API(C#) By Mike Wasson|January 21, 2012作者:Mike Wasson ...
随机推荐
- 常见错误:Apple Mach-O Linker Error
常见错误描述: Apple Mach-O Linker Error这类错误的错误信息最后一行通常如下: Command /Developer/Platforms/iPhoneOS.platform/D ...
- JSON初探
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- CSS复合样式
关于font OK,我们先从font来谈起. 如下一段代码: div{ font-size: 14px; font-family: '\5FAE\8F6F\96C5\9ED1'; font-weigh ...
- Codeforces Gym 100803G Flipping Parentheses 线段树+二分
Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...
- PrettyProgressBar
https://github.com/liuguangqiang/PrettyProgressBar
- 识货的拿走:Android游戏框架解读之总体结构
Android游戏开发的框架图无偿奉上.
- 【Oracle】ORA-00600: [kfgFinalize_2]
环境: OS:OEL5.6 RAC:10.2.0.1.0 [root@rac2 ~]# crs_stat -t Name Type Target Stat ...
- centos 安装http协议的git server
1.服务器端安装httpd,git,gitweb等 1 #yum install httpd git git-daemon gitweb 2.服务器端初始化仓库 1 2 3 #mkdir -p /d ...
- 引入第三方库错误Undefined symbols for architecture i386: _OBJC_CLASS_$的解决方案
引起标题上所导致的错误是因为你的第三方库没有放入到Compile Sources里面去. 需要到你项目的Targets>>Build Phases>>Compile Sourc ...
- careercup-高等难度 18.7
18.7 给定一组单词,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成. 解法: 原题 给定字符串,以及一个字典,判断字符串是否能够拆分为字段中的单词.例如,字段为{hell ...