什么是asp的生命周期(ASP.Net页面生命周期是多长)

:暂无数据 2026-04-16 08:00:01 0

什么是asp的生命周期(ASP.Net页面生命周期是多长)

大家好,什么是asp的生命周期相信很多的网友都不是很明白,包括ASP.Net页面生命周期是多长也是一样,不过没有关系,接下来就来为大家分享关于什么是asp的生命周期和ASP.Net页面生命周期是多长的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

ASP.Net页面生命周期是多长

【答案】:每个页面的生命周期为用户的每一次访问,也就是说每一次客户端与服务器之间的一个往返过程.全局变量的生命周期在此之间.
1. Page_Init();
2. Load ViewState and Postback data;
3. Page_Load();
4. Handle control events;
5. Page_PreRender();
6. Page_Render();
7. Unload event;
8. Dispose method called;

ASP.NET生命周期或ASP.NET页的生命周期

你要处理这个问题,我建议你去了解下ASPX页面的生命周期的问题。
我想这个知识点可以解决你上面提到的问题。
页面的生命周期提到了页面从诞生但结束一系列的事件执行的过程。
在这些过程中你可以写入各个需要处理逻辑代码在里面。
比如你上面这种情况,当本页面关闭时,服务器端会触发一个OnUnload事件,这个事件是执行所有最后的清理操作,例如关闭文件、关闭数据库连接和丢弃对象。在这个事件中,写入你需要操作的代码(比如删除数据库临时数据),那么问题就会变得简单。
下面举个例子:
class example:System.Web.UI.Page
{
//在类中重写OnInit方法。这个方法是在页面初始化的时候被调用的
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Unload += new EventHandler(Page_Unload);
}

protected void Page_Unload(object sender, EventArgs e)
{
//这里面填写你需要的操作的代码,当页面结束的时候系统会自动调
//用这个方法来执行你需要的服务器端的操作!
//也就是在这里写你需要删除的相关数据库中的数据的代码
}
}
注意:在使用的时候请把你当前的页面继承与这个自定义的页面
如果使用全局文件Global.asax来处理的话,当然你上面需要的功能也能实现,但是这个文件是全局的,比如,你定义好了,每个页面都会去执行。当你只需要某几个页面需要作处理的时候,使用全局文件来配置就有点不太合理。
最后兄弟就详细的去了解下ASP。NET的生命周期。
在MSDN的Page类中可以去了解到。

ASP.NET Web页生命周期的名词解释

页面生命周期
页面生命周期执行一系列步骤:页面的初始化、实例化控件、还原和维护状态、运行事件处理程序代码、呈现。为了在合适的阶段执行所需的代码,所以要对页面生命周期非常熟悉。在页生命周期的各个阶段,页面会逐个引发定义的事件,通过对代码开发,在页面的生命事件中执行我们所需要的程序
页生命周期阶段
1、 页请求:发生在页面生命周期之前,用户请求页时,ASP.NET将确定是否需要分析和编译页,从而确定是否开始页面的生命周期,或者是否可以在不运行页的情况下发送页面缓存以进行响应。
2、 开始:设置页属性,如:HttpContext以及其他属性;在此阶段,页面需要确定是回发请求还是新请求,并设置IsPostBack属性;设置页面的UICulture属性。
3、 页面初始化:加载所有主题;控件生成,并设置UniqueID;
注:ViewState、ControlState中的值还未加载至控件;如果页面是回发,则回发数据也还未加载;故此时控件可以访问,但值可能出错。
4、 加载:如果当前请求是回发请求,则为控件加载ViewState和ControlState中的值。
5、 验证:调用所有验证程序控件的Validate方法,此方法将设置验证程序控件和页的IsValid属性。
6、 回发事件处理:如果请求是回发请求,则调用所有事件处理程序。
7、 呈现:首先对该页和所有控件进行保存视图状态,然后对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输入写入页的Response属性的OutputStream中。
8、 卸载:完成呈现,并已将页发送至客户端、准备丢弃该页后,调用卸载。将卸载属性如:Response和Request等等。
页生命周期事件:
1、PreInit
完成操作:检查IsPostBack属性来确定是不是第一次处理该页;
创建或重新创建动态控件
动态设置主控页
动态设置Theme属性
读取或设置配置文件属性
注:如果请求是回发请求,则控件的值尚未从视图状态恢复,即:不应该在此事件中设置控件属性。
2、Init
完成操作:在所有控件都已经初始化并且应用所有外观设置后引发。使用该事件来读取和初始化控件属性。
3、InitComplete
完成操作:由Page对象引发,使用该事件来处理要求完成所有初始化工作的任务。
4、PreLoad
完成操作:为页和所有控件加载视图状态,然后处理Request 实例包括的任何回发数据。
注:如果需要在Load之前对页或控件进行处理,需要该事件。
5、Load
完成操作:以递归方式加载所有控件。
6、控件事件
完成操作:处理控件引发的事件。
注:在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查Page和各个验证控件的IsValid属性。
7、LoadComplete
8、PreRender
在控件输出前最后的修改机会。
注:在该事件发生前的操作:
Page对所有控件递归进行EnsureChildControl操作
设置了DataSourceID属性的数据绑定控件会调用DataBind方法。
9、SaveStateComplete
在该事件发生前,已经对控件的ViewState进行了保存。将忽略对页和控件所作的所有修改。
10、Render
方法,便于开发
11、UnLoad
应用程序生命周期
在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法。若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为 Global.asax 的文件。如果创建了 Global.asax 文件,ASP.NET 会将其编译为从 HttpApplication 类派生的类,然后使用该派生类表示应用程序。
HttpApplication 进程的一个实例每次只处理一个请求。由于在访问应用程序类中的非静态成员时不需要将其锁定,这样可以简化应用程序的事件处理过程。这样还可以将特定于请求的数据存储在应用程序类的非静态成员中。例如,可以在 Global.asax 文件中定义一个属性,然后为该属性赋一个特定于请求的值。
Application_Start 和 Application_End 方法是不表示 HttpApplication 事件的特殊方法。在应用程序域的生命周期期间,ASP.NET 仅调用这些方法一次,而不是对每个 HttpApplication 实例都调用一次。

IIS处理Asp.net请求和Asp.net页面生命周期方法


当一个客户端页面访问IIS试图获取一些信息的时候,发生了什么事情?一个请求在通过了HTTP管道后又发生了什么?本文主要是描述这两个过程,即IIS处理请求和的页面生命周期。欢迎大家积极拍砖,共同学习,共同进步。
首先我们要弄清楚两个非常重要的概念:
1, worker process(w3wp.exe). worker process管理所有的来自客户端的请求并给出响应。它是IIS下应用程序的核心。
2, application pool. 它是worker process的容器,IIS5及之前的IIS版本均没有application pool的概念。每一个application pool对应着一个worker process,在IIS Metabase中维护着Application Pool和worker process的Mapping。这就避免了IIS5中出现的worker process(IIS5中是aspnet_wp.exe,同一时间只能运行一个该进程)崩溃,application全崩溃的局面。
客户端向IIS发出一个资源请求后发生了如下事情:
1, server接受该请求
IIS6通过内核模式(Kernel mode)中的HTTP.SYS来分发各个Request到application pool。 这并不是随机的过程,在application pool创建的时候就已经注册到了HTTP.SYS,所以当请求来到时HTTP.SYS会直接发送到相应的application pool。 接下来在IIS的用户模式(User mode)中,Web Admin Services (WAS) 做了从HTTP.SYS中得到Request并分发到application pool的工作。application pool直接把request传递给worker process。
2, 请求传递到worker process后,worker process初始化加载ASP.NET ISAPI(Internet Server Application Program Interface),ASP.NET ISAPI进而加载CLR创建托管环境。
(注:ISAPI只是一个接口,起到一个代理的作用,主要能力就是根据Request URL的后缀来寻找该后缀的处理程序)
***隐藏网址***
***隐藏网址***
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事件直到页面和所有的子控件被加载完成。这个事件主要用来设置控件属性的值,建立数据库连接(通常不这么做)。
Control events: 这个就不多说了,主要是处理控件的事件,例如click。这也就让我们明白了每次我们click一个Button的时候,实际上是要先去执行load事件然后才执行click事件的,一般我们用!IsPostBack来判断一下从而避免执行不必要的加载逻辑。
LoadComplete: 页面所有的控件都被加载以后执行,暂时没有想到用来干什么。。。
PreRender: 在HTML被生成之前这是最后一个事件。每一个页面中的控件都有PreRender的过程。在这里对将要输出的HTML结果进行最后一次修改。
SaveStateComplete: 在这个时间发生之前,已经保存了所有控件和页面的,任何对page或者控件的改动都不会产生左右。暂时没想到用来干啥。
Render: 它不是一个事件而是一个方法。工作就是把HTML写回客户端浏览器。
UnLoad: 页面中的每一个控件都会发生这件事。在控件中,使用这个事件来做清理工作,例如关闭数据库连接等。对与页面本身也是做清理工作,例如关闭打开的文件和数据库连接,或者结束日志或者其它指定的工作。
需要说明的是,每次Request都会创建一个全新的Page类的实例,所以在页面中的自己定义的字段是不能在两次request中传递值的,需要使用viewstate来存储。
5, HttpHandler根据页面生命周期中事件的处理把结果发回IIS,IIS再把结果发回客户端浏览器。
值得注意的是,在这个过程中请求会再次通过HttpModule(注册一个EndRequest事件)。
至此,整个Request结束。

Asp.Net页面生命周期

  我们都知道 浏览器的作用就是将用户请求的内容封装成HTTP报文的形式 然后通过Socekt套接字和域名解析服务器(DNS)将域名转成ip地址发送到服务器

  服务器端的Windows操作系统分为两个部分 IIS运行在用户模式下 而监听 端口的那部分是运行在内核模式HTTP SYS(内核模块也是一个插件机制 socket通信机制在内核模块中 内核模块也是一种通信机制)下的 属于HTTP处理的内核模块 内核模式可以监听当前机器所有的Http请求 并将当前请求进行简单解析 确定协议的类型请求的端口 访问注册表 确定当前的请求需要交给IIS进行处理

  IIS接收到请求之后 访问INetInfo exe(IIS主进程中的元数据信息) 判断文件的类型并查询当前的请求需要经过那个扩展程序处理 如果是静态文件( js jpeg git) 直接将文件从服务器读取出来按照原路返回 如果是动态文件(ashx aspx) 则交给扩展程序aspnet_isapi dll文件执行 aspnet_isapi dll是一个扩展程序 实现了IIS内部的一些API 也是一种请求过滤的插件 它的作用是 负责启动托管环境 初始化托管环境 将请求分发给托管环境 也就是说 它负责启动aspnet  Runtime创建aspnet运行环境 将请求交给ISAPIRuntime的PR方法

  ISAPIRuntime是进入NET托管环境的入口 它在方法中通过一个ecb句柄指向了当前请求报文体的内存地址 将HTTP请求报文简单封装为一个HttpWorkRequest对象

  调用HttpRuntime PR(wr:(HttpWorkRequest对象))根据 HttpWorkRequest对象封装成一个HttpContext上下文对象 它包含了所有的请求信息 然后交给HttpApplicationFactory进行处理

  根据HttpApplication获得一个HttpApplication对象的实例 获取实例的时候 先去Application池中去找是否有空闲的HttpApplication对象 如果有则直接返回一个对象 不存在的话就就先编译globle文件生成一个HttpApplication的派生类 通过反射创建一个HttpApplication实例并返回 并开始处理用户的请求

  用户的请求是通过触发HttpApplication的 个事件 个步骤进行处理的 如果是一般处理程序( ashx) 那么执行完管道中的事件后按照原路进行返回 如果是aspx页面那么就开始走页面的生命周期了

  页面生命周期的主要步骤如下

   创建页面控制树 那么如何创建页面树的结构呢?把它封装成了一个方法 这个方法的名字就叫做FrameworkInitliaze() 在方法内部给aspx上所有的控件都New一个实例 然后构造一个树的结构即是有一个树的结构 只有执行创建页面之后 页面上才会有控件

   判断IspostBack 确定是否回发

   初始化

  初始化包括三个阶段

   )PreInint()预初始化

  A 调用OnPreinit方法引发PreInit事件

  B 利用App_Themes目录中的内容进行初始化主题 以动态实现一个PageThem

  属性值 并创建一个编译类的实例

  C 应用模板页

   )开始初始化 将所创建的控件树上的控件都new一个实例并赋默认值

  A 递归初始化Controls集合中的控件 初始化包括设置这些控件的属性

  B 递归应用控件皮肤

  C 调用OnInit方法以引发自身的Init事件 接着递归调用子控件的OnInit方法来

  引发他们的Init事件

  D 调用自身的TrackViewState方法重启自身的视图状态跟踪 接着递归调用子控

  件的TrackViewState方法重启自身的视图状态跟踪

   )InitComplete()初始化完成

   加载ViewState处理回发数据

  加载页面状态 解析隐藏域中的ViewState ViewState保持的值赋值到对应

  控件中 把需要触发事件的控件放到一个集合当中去

   预加载(PreLoad)

  页面调用OnPreLoad方法以引发PreLoad事件 该事件表示页面生命周期进

  入加载阶段 对应sapx cs中的Page_Load事件

   加载(Load)

  页面首先调用自身的OnLoad方法以引发自身的Load事件 接着递归调用

  Contorls集合中控件的OnLoad方法以引发它们的Load事件

   ProcessPostData第二次处理回发数据

   触发改变的事件和点击事件

   页面加载完成

   预渲染 对空间树进行最后一次处理

   保存当前页面的状态

   页面渲染

  页面生命周期结束后 形成了页面 继续执行管道之后的事件 执行完毕后按照原路返回到客户端

lishixinzhi/Article/program/net/201311/16141

一个web页面的生命周期是什么

人都知道是有生命周期的,一个人从呱呱落地到慢慢老去经历了一个生命轮回,这是生命的一个周期。\x0d\x0a同样ASP.NET开发的WEB页面也有它自己的生命周期,从生成到销毁,也经历了不同的阶段和过程。对于ASP.NET页面生命周期中将执行一些列处理步骤。\x0d\x0a这些步骤包括初始化、实例化控件、还原和维护状态、运行时间处理程序代码及呈现。\x0d\x0a一般来说,也要经历如下各个阶段\x0d\x0a1.页请求:页请求发生在页面生命周期开始之前,用户请求页时,ASP.NET将确定是否需要分析和编译页\x0d\x0a2.开始:在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性\x0d\x0a3.页初始化:在页初始化期间,可以使用页中的控件,并设置每个控件的UniqueID属性。\x0d\x0a4.加载:在加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。\x0d\x0a5.验证:在验证期间,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValidate属性。\x0d\x0a6.回发事件处理:如果请求是回发请求,则将调用所有事件处理程序\x0d\x0a7.呈现:在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输出写入页的Response属性和OutputStream中\x0d\x0a8.卸载:完全呈现页并将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性并执行清理。\x0d\x0a\x0d\x0a一般如果面试问到的话,只需要在说时前面稍加有艺术表达一下生命周期的意思,然后说出ASP.NET生命周期的几个步骤就可以了,估计面试官后面会针对某一个阶段深入问了,这个时候你就需要需要知道具体细节了。

asp.net中application的生命周期,求高手描述下~~

ASP.NET
应用程序生命周期的几个阶段是:
1.用户从
Web
服务器请求应用程序资源。
2.ASP.NET
接收对应用程序的第一个请求。
3.为每个请求创建
ASP.NET
核心对象。
4.将
HttpApplication
对象分配给请求。
5.由
HttpApplication
管线处理请求。
另外,
ASP.NET
页生命周期生命周期阶段是:页请求,
开始,
页初始化,加载,验证,回发事件处理,呈现,卸载

OK,关于什么是asp的生命周期和ASP.Net页面生命周期是多长的内容到此结束了,希望对大家有所帮助。

什么是asp的生命周期(ASP.Net页面生命周期是多长)

本文编辑:admin

更多文章:


blast premier春季赛(csgo战队vitality有谁)

blast premier春季赛(csgo战队vitality有谁)

“blast premier春季赛”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看blast premier春季赛(csgo战队vitality有谁)!

2026年9月7日 21:50

send out用法及例句(send out是什么意思)

send out用法及例句(send out是什么意思)

各位老铁们好,相信很多人对send out用法及例句都不是特别的了解,因此呢,今天就来为大家分享下关于send out用法及例句以及send out是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 20:30

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)

大家好,关于全球新冠肺炎疫情背景下航运发展很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决

2026年9月7日 17:10

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)

大家好,关于matlab求解带字母参数方程组很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数的知识点,相信应该可以解决大家的一些困惑和问题,

2026年9月7日 16:30

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)

本篇文章给大家谈谈oracle中的循环语句,以及下面哪个不是oracle程序设计中的循环语句 a for对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 15:30

多表查询怎么做(Excel技巧:如何多表同步筛选)

多表查询怎么做(Excel技巧:如何多表同步筛选)

各位老铁们好,相信很多人对多表查询怎么做都不是特别的了解,因此呢,今天就来为大家分享下关于多表查询怎么做以及Excel技巧:如何多表同步筛选的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 15:10

服装店网站网页设计(服装网站建设目标设计要看甲方)

服装店网站网页设计(服装网站建设目标设计要看甲方)

“服装店网站网页设计”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看服装店网站网页设计(服装网站建设目标设计要看甲方)!

2026年9月7日 14:10

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)

大家好,电脑里2个系统怎么删除一个相信很多的网友都不是很明白,包括电脑开机显示有两个系统,如何删除一个也是一样,不过没有关系,接下来就来为大家分享关于电脑里2个系统怎么删除一个和电脑开机显示有两个系统,如何删除一个的一些知识点,大家可以关注

2026年9月7日 12:20

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

苹果手机代码大全(恢复更新固件iOS未知错误代码解决大全)

大家好,今天小编来为大家解答以下的问题,关于苹果手机代码大全,恢复更新固件iOS未知错误代码解决大全这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 10:20

scrollthrough意思(“scroll”是什么意思)

scrollthrough意思(“scroll”是什么意思)

今天给各位分享“scroll”是什么意思的知识,其中也会对“scroll”是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 08:00

最近更新

blast premier春季赛(csgo战队vitality有谁)
2026-09-07 21:50:01 浏览:0
热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表