ASP.NET 应用程序生命周期概述<!---->
<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->
本主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程序生命周期的代码。在 ASP.NET 中,若要对 ASP.NET 应用程序进行初始化并使它处理请求,必须执行一些处理步骤。此外,ASP.NET 只是对浏览器发出的请求进行处理的 Web 服务器结构的一部分。了解应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果。
应用程序生命周期概述
下表描述了 ASP.NET 应用程序生命周期的各个阶段。
<!---->
生命周期事件和 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 实例都调用一次。
下表列出在应用程序生命周期期间使用的一些事件和方法。实际远不止列出的这些事件,但这些事件是最常用的。
<!---->
事件或方法
说明
Application_Start
|
请求 ASP.NET 应用程序中第一个资源(如页)时调用。在应用程序的生命周期期间仅调用一次 Application_Start 方法。可以使用此方法执行启动任务,如将数据加载到缓存中以及初始化静态值。
在应用程序启动期间应仅设置静态数据。由于实例数据仅可由创建的 HttpApplication 类的第一个实例使用,所以请勿设置任何实例数据。
|
Application_ event
|
在应用程序生命周期中的适当时候引发,请参见本主题前面的应用程序生命周期表中列出的内容。
Application_Error 可在应用程序生命周期的任何阶段引发。
由于请求会短路,因此 Application_EndRequest 是唯一能保证每次请求时都会引发的事件。例如,如果有两个模块处理 Application_BeginRequest 事件,第一个模块引发一个异常,则不会为第二个模块调用 Application_BeginRequest 事件。但是,会始终调用 Application_EndRequest 方法使应用程序清理资源。
|
HttpApplication.Init
|
在创建了所有模块之后,对 HttpApplication 类的每个实例都调用一次。
|
Dispose
|
在销毁应用程序实例之前调用。可使用此方法手动释放任何非托管资源。有关更多信息,请参见清理非托管资源。
|
Application_End
|
在卸载应用程序之前对每个应用程序生命周期调用一次。
|
编译生命周期
在第一次对应用程序发出请求时,ASP.NET 按特定顺序编译应用程序项。要编译的第一批项称为顶级项。在第一次请求之后,仅当依赖项更改时才会重新编译顶级项。下表描述编译 ASP.NET 顶级项的顺序。
<!---->
项
说明
App_GlobalResources
|
编译应用程序的全局资源并生成资源程序集。应用程序的 Bin 文件夹中的任何程序集都链接到资源程序集。
|
App_WebResources
|
创建并编译 Web 服务的代理类型。所生成的 Web 引用程序集将链接到资源程序集(如存在)。
|
Web.config 文件中定义的配置文件属性
|
如果应用程序的 Web.config 文件中定义了配置文件属性,则生成一个包含配置文件对象的程序集。
|
App_Code
|
生成源代码文件并创建一个或更多个程序集。所有代码程序集和配置文件程序集都链接到资源和 Web 引用程序集(如果有)。
|
Global.asax
|
编译应用程序对象并将其链接到所有先前产生的程序集。
|
在编译应用程序的顶级项之后,ASP.NET 将根据需要编译文件夹、页和其他项。下表描述编译 ASP.NET 文件夹和项的顺序。
<!---->
项
说明
App_LocalResources
|
如果包含被请求项的文件夹包含 App_LocalResources 文件夹,则编译本地资源文件夹的内容并将其链接到全局资源程序集。
|
各个网页(.aspx 文件)、用户控件(.ascx 文件)、HTTP 处理程序(.ashx 文件)和 HTTP 模块(.asmx 文件)
|
根据需要编译并链接到本地资源程序集和顶级程序集。
|
主题、主控页、其他源文件
|
在编译引用页时编译那些页所引用的各个主题、主控页和其他源代码文件的外观文件。
|
编译后的程序集缓存在服务器上并在后续请求时被重用,并且只要源代码未更改,就会在应用程序重新启动之间得到保留。
由于应用程序在第一次请求时进行编译,所以对应用程序的初始请求所花的时间会明显长于后续请求。可以预编译应用程序以减少第一次请求所需的时间。有关更多信息,请参见如何:预编译 ASP.NET 网站。
Application Restarts(应用程序重新启动的次数)
修改 Web 应用程序的源代码将导致 ASP.NET 把源文件重新编译为程序集。当修改应用程序中的顶级项时,应用程序中引用顶级程序集的其他所有程序集也会被重新编译。
此外,修改、添加或删除应用程序的已知文件夹中的某些类型的文件将导致应用程序重新启动。下列操作将导致应用程序重新启动:
-
添加、修改或删除应用程序的 Bin 文件夹中的程序集。
-
添加、修改或删除 App_GlobalResources 或 App_LocalResources 文件夹中的本地化资源。
-
添加、修改或删除应用程序的 Global.asax 文件。
-
添加、修改或删除 App_Code 目录中的源代码文件。
-
添加、修改或删除配置文件配置。
-
添加、修改或删除 App_WebReferences 目录中的 Web 服务引用。
-
添加、修改或删除应用程序的 Web.config 文件。
当应用程序需要重新启动时,ASP.NET 将在重新启动应用程序域和加载新的程序集之前,从现有应用程序域和旧的程序集中为所有挂起的请求提供服务。
HTTP 模块
ASP.NET 应用程序生命周期可通过 IHttpModule 类进行扩展。ASP.NET 包含若干实现 IHttpModule 的类,如 SessionStateModule 类。您还可以自行创建实现 IHttpModule 的类。
如果向应用程序添加模块,模块本身会引发事件。通过使用 modulename_eventname 约定,应用程序可以在 Global.asax 文件中预订这些事件。例如,若要处理 FormsAuthenticationModule 对象引发的 Authenticate 事件,可以创建一个名为 FormsAuthentication_Authenticate 的处理程序。
默认情况下,ASP.NET 中会启用 SessionStateModule 类。所有会话事件将自动命名为 Session_event,如 Session_Start。每次创建新会话时都会引发 Start 事件。有关更多信息,请参见会话状态概述。
请参见
分享到:
相关推荐
#### 二、ASP.NET 应用程序生命周期概述 在 IIS7.0 集成模式下,ASP.NET 应用程序的生命周期可以分为几个关键阶段,每个阶段都涉及不同的处理过程。理解这些阶段对于优化应用程序性能、调试错误以及更好地管理资源至...
ASP_NET 应用程序生命周期概述.mht
#### IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述 ASP.NET 是一个用于构建 Web 应用程序的强大框架,其设计考虑了高度的灵活性和可扩展性。在 IIS 5.0 和 6.0 下,ASP.NET 的应用程序生命周期主要包括以下几个...
#### 二、ASP.NET Web生命周期概述 ASP.NET Web生命周期主要包括以下几个关键阶段:初始化、加载视图状态、加载控件状态、预渲染、回发事件处理、渲染、卸载。下面我们将对这些阶段进行详细的解析。 #### 三、详细...
### ASP.NET MVC Request 生命周期详解 #### 一、概述 ASP.NET MVC 是一种流行的 Web 开发框架,它将 Web 应用程序分为模型(Model)、视图(View)与控制器(Controller)三部分,以此来提高开发效率并增强代码的可维护...
ASP.NET 是微软公司推出的一种用于构建动态网站、Web 应用程序和服务的开发框架。它基于.NET Framework,提供了一种高效、安全且可扩展的方式来构建 Web 解决方案。本篇文章将深入探讨 ASP.NET 的核心概念、特性以及...
ASP_NET 页生命周期概述ASP_NET 页生命周期概述ASP_NET 页生命周期概述ASP_NET 页生命周期概述ASP_NET 页生命周期概述ASP_NET 页生命周期概述
ASP.NET是一种由微软开发的用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了强大的工具和语言支持,如Visual Basic .NET (vb.net)。本课件专注于ASP.NET程序设计及其在实际应用中的方法,旨在帮助...
除此之外,课程可能还会涉及其他主题,如ASP.NET的页面生命周期、控件、状态管理、数据访问技术(如ADO.NET或Entity Framework)、用户身份验证与授权、以及部署策略等。这些内容旨在使学生能够独立地设计、开发、...
ASP.NET Web程序设计教程是针对开发人员的一门深入学习课程,旨在教授如何使用ASP.NET框架构建高效、功能丰富的Web应用程序。这门教程涵盖了从基础到高级的多个方面,旨在帮助初学者快速上手并逐步提升专业技能。 ...
#### 二、ASP.NET页面生命周期概述 ASP.NET页面生命周期主要由以下八个关键阶段组成: 1. **页请求(Page Request)** - 用户请求页面时,ASP.NET首先判断是否需要分析和编译页面。 - 如果页面已经被缓存,且无需...
ASP.NET Web程序设计是微软开发的一种用于构建动态网站、Web应用程序和Web服务的技术。这个电子教案专注于使用C#编程语言进行开发,以下是根据压缩包文件的名称所涵盖的知识点的详细说明: 1. **第一章 ASP.NET概述...
1. **ASP.NET概述**:ASP.NET是.NET Framework的一部分,它为构建动态网站、Web应用程序和Web服务提供了强大的支持。ASP.NET提供了多种开发模型,如Web Forms、MVC(Model-View-Controller)和Web Pages,每种模型都...
ASP.NET是微软公司推出的一种用于构建动态网站、Web应用程序和Web服务的开发框架。它基于.NET Framework,为开发者提供了一种高效、强大的工具,用于创建功能丰富的网页应用。本教程将深入讲解ASP.NET的核心概念、...
ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的工具和库,简化了Web应用的开发过程。本教程针对初学者,将深入讲解ASP.NET程序设计的基础知识,帮助你从零开始...
1. **第一章**:通常介绍ASP.NET的基础知识,包括.NET Framework概述,Web应用程序的生命周期,以及如何创建第一个ASP.NET页面。习题答案可能会解析IIS与ASP.NET的关系,以及WebForm和MVC两种开发模式的区别。 2. *...
- ASP.NET的核心概念,如页面生命周期、事件模型和状态管理机制也会被提及。 2. **ASP.NET应用程序基础 (ch02 ASP.NET应用程序基础.ppt)** - 这部分可能涵盖了ASP.NET的基本结构,如Web Forms、MVC和Web API,...
ASP.NET是由微软开发的一个强大的Web应用程序框架,用于构建动态、数据驱动的网站和应用。它构建在.NET Framework之上,提供了一种高效、易于使用的开发环境,支持多种编程语言,包括VB.NET和C#。 在VB.NET语法中,...
ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了强大且易用的工具,用于创建动态网站、Web服务和Web应用程序。本教程将深入探讨ASP.NET的应用,帮助读者掌握其核心...
2. **添加代码**: 在Global.asax.cs文件中,这个文件包含了ASP.NET应用程序的生命周期事件。例如,可以在`Application_Start`方法中初始化应用对象,如: ```csharp protected void Application_Start(object ...