[转]ASP.net Application 生命周期事件

生命周期事件和 Global.asax 文件

在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法。若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为 Global.asax 的文件。

如果创建了 Global.asax 文件,ASP.NET 会将其编译为从 HttpApplication 类派生的类,然后使用该派生类表示应用程序。

HttpApplication 进程的一个实例每次只处理一个请求。由于在访问应用程序类中的非静态成员时不需要将其锁定,这样可以简化应用程序的事件处理过程。这样还可以将特定于请求的数据存储在应用程序类的非静态成员中。例如,可以在 Global.asax 文件中定义一个属性,然后为该属性赋一个特定于请求的值。

通过使用命名约定 Application_event(如 Application_BeginRequest),ASP.NET 可在 Global.asax 文件中将应用程序事件自动绑定到处理程序。这与将 ASP.NET 页方法自动绑定到事件(如页的 Page_Load 事件)的方法类似。有关详细信息,请参见 ASP.NET 页生命周期概述

Application_Start 和 Application_End 方法是不表示 HttpApplication 事件的特殊方法。在应用程序域的生命周期期间,ASP.NET 仅调用这些方法一次,而不是对每个 HttpApplication 实例都调用一次。

 1 在处理该请求时将由 HttpApplication 类执行以下事件。希望扩展 HttpApplication 类的开发人员尤其需要注意这些事件。
 2
 3 对请求进行验证,将检查浏览器发送的信息,并确定其是否包含潜在恶意标记。有关更多信息,请参见ValidateRequest 和脚本侵入概述。
 4
 5 如果已在 Web.config 文件的 UrlMappingsSection 节中配置了任何 URL,则执行 URL 映射。
 6
 7 引发 BeginRequest 事件。
 8
 9 引发 AuthenticateRequest 事件。
10
11 引发 PostAuthenticateRequest 事件。
12
13 引发 AuthorizeRequest 事件。
14
15 引发 PostAuthorizeRequest 事件。
16
17 引发 ResolveRequestCache 事件。
18
19 引发 PostResolveRequestCache 事件。
20
21 根据所请求资源的文件扩展名(在应用程序的配置文件中映射),选择实现 IHttpHandler 的类,对请求进行处理。如果该请求针对从 Page 类派生的对象(页),并且需要对该页进行编译,则 ASP.NET 会在创建该页的实例之前对其进行编译。
22
23 引发 PostMapRequestHandler 事件。
24
25 引发 AcquireRequestState 事件。
26
27 引发 PostAcquireRequestState 事件。
28
29 引发 PreRequestHandlerExecute 事件。
30
31 为该请求调用合适的 IHttpHandler 类的 ProcessRequest 方法(或异步版 BeginProcessRequest)。例如,如果该请求针对某页,则当前的页实例将处理该请求。
32
33 引发 PostRequestHandlerExecute 事件。
34
35 引发 ReleaseRequestState 事件。
36
37 引发 PostReleaseRequestState 事件。
38
39 如果定义了 Filter 属性,则执行响应筛选。
40
41 引发 UpdateRequestCache 事件。
42
43 引发 PostUpdateRequestCache 事件。
44
45 引发 EndRequest 事件。

Application Restarts(应用程序重新启动的次数)

修改 Web 应用程序的源代码将导致 ASP.NET 把源文件重新编译为程序集。当修改应用程序中的顶级项时,应用程序中引用顶级程序集的其他所有程序集也会被重新编译。

此外,修改、添加或删除应用程序的已知文件夹中的某些类型的文件将导致应用程序重新启动。下列操作将导致应用程序重新启动:

  • 添加、修改或删除应用程序的 Bin 文件夹中的程序集。
  • 添加、修改或删除 App_GlobalResources 或 App_LocalResources 文件夹中的本地化资源。
  • 添加、修改或删除应用程序的 Global.asax 文件。
  • 添加、修改或删除 App_Code 目录中的源代码文件。
  • 添加、修改或删除配置文件配置。
  • 添加、修改或删除 App_WebReferences 目录中的 Web 服务引用。
  • 添加、修改或删除应用程序的 Web.config 文件。

当应用程序需要重新启动时,ASP.NET 将在重新启动应用程序域和加载新的程序集之前,从现有应用程序域和旧的程序集中为所有挂起的请求提供服务。

时间: 2024-10-14 04:32:10

[转]ASP.net Application 生命周期事件的相关文章

asp.net 页面生命周期事件详细

(1)请求页面:页请求发生在页生命周期开始之前. (2)开始:在开始阶段,将设置页属性,如Request和Response.在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性. (3)初始化页面:页面初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性.如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值. (4)加载页面:加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性. (5)验证:

ASP.NET网页生命周期事件

网页事件 典型的使用方式 PreInit PreInit事件是网页生命周期中非常早起的一个事件,在PreInit事件触发之后,就会加载用户设置信息与网页主题.我们通常使用PreInit事件来执行下列处理: l 检查IsPostBack属性,来确认网页是否为第一次被处理. l 创建或重新创建动态控件. l 动态设置一个母版页. l 动态设置Theme属性. l 读取或设置用户设置文件属性值. Init 在所有的控件都已经被初始化,而且所有的面板设置都已经应用之后,就会触发Init事件.可以使用此事

ASP.NET 应用程序(Application)生命周期概述

原文:ASP.NET 应用程序(Application)生命周期概述 引用MSDN:ASP.NET 应用程序生命周期概述 本 主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程序生命周期的代码.在 ASP.NET 中,若要对 ASP.NET 应用程序进行初始化并使它处理请求,必须执行一些处理步骤.此外,ASP.NET 只是对浏览器发出的请求进行处理的 Web 服务器结构的一部分.了解应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果. 应用程序

Application简介(二)--重写应用程序的生命周期事件

Application类为应用程序的创建和终止.低可用内存和配置改变了事件处理程序,通过重写以下这些方法,可以为上述几种情况实现自己的应用程序行为: 1.onCreate:在创建应用程序时调用这个方法.可以重写这个方法来实例化应用程序单态,也可以创建和实例化任何应用程序状态变量或共享资源. 2.onLowMemory:这个方法一般只会在后台进程已经终止,但是前台应用程序仍然缺少内存时调用.可以重写这个处理程序来清空缓存或者释放不必要的资源. 3.onTrimMemory:作为onLowMemor

ASP.NET -- WebForm -- 页面生命周期事件

ASP.NET -- WebForm --  页面生命周期事件在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件. 1. PreInit: 使用该事件来执行下列操作: 检查 IsPostBack 属性来确定是不是第一次处理该页. 创建或重新创建动态控件. 动态设置主控页. 动态设置 Theme 属性. 读取或设置配置文件属性值. 注意: 如果请求是回发请求,则控件的值尚未从视图状态还原.如果在此阶段设置控件属性,则其值可能会在下一事件中被覆盖. 2. Init   在所有控件都已

[译] ASP.NET 生命周期 – ASP.NET 请求生命周期(四)

不使用特殊方法来处理请求生命周期事件 HttpApplication 类是全局应用类的基类,定义了可以直接使用的一般 C# 事件.那么使用标准 C# 事件还是特殊方法那就是个人偏好的问题了,如果喜欢,也可以将这两种方式混合起来使用. 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.W

[译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)

使用特殊方法处理请求生命周期事件 为了在全局应用类中处理这些事件,我们会创建一个名称以 Application_ 开头,以事件名称结尾的方法,比如 Application_BeginRequest.举个例子,就像 Application_Start 和 Application_End 方法,ASP.NET 框架就会在事件触发的时候找到这些函数并触发它.下面是更新后的代码片段: 1 using System; 2 using System.Collections.Generic; 3 using

ASP.NET 生命周期 – ASP.NET 应用生命周期(一)

概述 ASP.NET 平台定义了两个非常重要的生命周期.第一个是 应用生命周期  (application life cycle),用来追踪应用从启动的那一刻到终止的那一刻.另一个就是 请求生命周期 (request life cycle),它定义了 HTTP 请求在 ASP.NET 平台中首次接收到,到最终响应发出之间的路径. ASP.NET 应用生命周期 在 ASP.NET 中有两个时刻——应用启动的时刻和应用停止接收请求的时刻,这两个时刻定义了应用生命周期.ASP.NET 在应用启动和当应

ASP.NET页面生命周期与控件生命周期

ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete 加载完成(7)PreRender 预输出(8)PreRenderComplete 预输出完成(9)Unload 卸载 ASP.NET控件生命周期 -- 实例化(Instantiate) 控件被页面或另一个控件通过调用它的构造器所实例化.这个步骤之后所列出的阶段,仅当控件加入控件树中才会发生. --