在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序.
在Global.asax.cs文件中
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Application["StartTime"] = System.DateTime.Now;
}
再在webform1中的page_load事件中添加
private void Page_Load(object sender, System.EventArgs e)
{
System.DateTime startTime = (System.DateTime)Application["StartTime"];
System.DateTime endTime = System.DateTime.Now;
System.TimeSpan ts = endTime - startTime;
Response.Write("页面执行时间:"+ ts.Milliseconds +" 毫秒");
}
如果是05版本中,就要手动添加了,自己在App_Code中添加Global.asax.cs,然后设置Global.asax的属性Inherits="Global"或CodeBehind="Global.asax.cs"即可<%@ Application Language="C#" Codebehind="Global.asax.cs" %>
以上测试在03/05均通过.
以下转对Global.asax文件的了解
1 Global.asax文件的作用
先看看MSDN的解释,Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或HTTP模块所引发的应用程序级别和会话级别事件的代码。Global.asax 文件驻留在 ASP.NET 应用程序的根目录中。运行时,分析 Global.asax 并将其编译到一个动态生成的 .NET Framework 类,该类是从HttpApplication基类派生的。配置 ASP.NET,以便自动拒绝对 Global.asax 文件的任何直接的 URL 请求;外部用户不能下载或查看其中的代码。Global.asax 文件是可选的。只在希望处理应用程序事件或会话事件时,才应创建它.
2 Global.asax文件的创建
点击Web站点>>添加新建项>>全局应用程序类,即可添加Global.asax文件。在.Net2003里,直接右击Global.asax文件查看代码就可以编辑Global.asax.cs文件,但是在.Net2005中,没有这个选项,因此需要自己在App_Code中添加Global.asax.cs,然后设置Global.asax的属性Inherits="Global"或CodeBehind="Global.asax.cs"即可。不可知道还有没有其他更好的方法。
3 Global.asax文件的执行
例如,IIS现在接到一个访问ASP.NET应用程序的请求,这时候IIS会将这个请求映射给aspnet_isapi.dll,当aspnet_isapi.dll接到这个请求后,会新建一个aspnet_wp.exe的进程(windows server 2003下是w3wp.exe进程),这个进程会将请求传递给一个被指定的AppDomain,当这个AppDomain被创建时,就会去加载一些配置文件中的信息(加载顺序是从machine.config文件到web.config文件中的一些相关配置),而当这些信息都被加载以后,AppDomain会去获得一个HttpApplication的实例,这个时候global类就会被编译加载了,接下来AppDomain会做一些相关的处理创建Page类的实例,最后这个页面呈现到客户端浏览器上。但这里有一点问题需要注意,当配置文件被加载的时候,并不是表示AppDomain会加载配置文件中所有的信息,而仅是加载一些需要的信息。而有些配置信息是在需要时,才会被AppDomain加载。例如我们在web.config文件中配置了很多HttpModule,但是仅当每一个HttpModule被访问到时,AppDomain才会去加载并处理这些信息。所以说web.config文件和global没有先后执行的顺序,只是视具体的信息什么时候会被加载和处理。
4 Global.asax.cs中的方法的含义
Application_Init:在每一个HttpApplication实例初始化的时候执行
Application_Disposed:在每一个HttpApplication实例被销毁之前执行
Application_Error:所有没有处理的错误都会导致这个方法的执行
Application_Start:在程序初始化的时候执行。在Web应用程序的生命周期里就执行一次,这里只能放一些公用的信息,比如HttpApplicationState。
Application_End:应用程序结束时,在最后一个HttpApplication销毁之后执行。对应Application_Start,在整个生命周期里面也是只执行一次。
Session_Start:会话开始时执行。
Session_End:会话结束或过期时执行。
Application_BeginRequest:BeginRequest是在收到Request时第一个触发的事件,这个方法第一个执行。
Application_AuthenticateRequest:当安全模块已经建立了当前用户的标识后执行。
Application_AuthorizeRequest:当安全模块已经验证了当前用户的授权时执行。
Application_ResolveRequestCache:当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。
Application_AcquireRequestState:当ASP.NET获取当前请求所关联的当前状态(如Session)时执行。
Application_PreRequestHandlerExecute:当ASP.Net即将把请求发送到处理程序对象(页面或者是WebService)之前执行。这个时候,Session就可以用了。
Application_PostRequestHandlerExecute:当处理程序对象工作完成后执行。
Application_ReleaseRequestState:在ASP.NET执行完所有请求处理程序后执行。ReleaseRequestState事件将使当前状态数据被保存。
Application_UpdateRequestCache:在ASP.NET执行完处理程序后为了后续的请求而更新响应缓存时执行。
Application_EndRequest:同上,EndRequest是在响应Request时最后一个触发的事件,这个方法自然就是最后一个执行的了。
Application_PreSendRequestHeaders:向客户端发送Http标头之前执行。
Application_PreSendRequestContent:向客户端发送Http正文之前执行。
Request相应的事件执行顺序:
1.BeginRequest 2.AuthenticateRequest 3.AuthorizeRequest 4.ResolveRequestCache 5.AcquireRequestState 6.PreRequestHandlerExecute 7.PostRequestHandlerExecute 8.ReleaseRequestState 9.UpdateRequestCache 10.EndRequest
分享到:
相关推荐
Global.asax文件 web.config文件 详解
**Global.asax 文件详解** 在ASP.NET框架中,`Global.asax`文件是一个至关重要的组件,它被用来处理应用程序级别的事件和全局性设置。这个文件的全称是`Application全球化.asax`,它是一个可选的脚本文件,通常用C#...
ASP.NET的Global.asax文件是Web应用程序的核心组件之一,它提供了全局范围内的代码执行环境,用于处理应用程序级和会话级的事件。这个文件通常位于应用程序的根目录下,是可选的,但如果存在,它将定义...
### ASP.NET 使用 SQL Server 实现 Session 共享详解 #### 一、背景介绍 在多站点环境下,如何实现用户在不同站点之间的Session信息共享成为了一个常见的需求。例如,在一个公司的内部环境中,可能存在多个子网站...
10. **Global.asax.resx**:与Global.asax相关的资源文件,同样用于文本的国际化或本地化。 这些文件组合在一起,构成了一个完整的asp.net Web应用,其中包含了一个用于SQL Server数据库安装的流程。开发者可以通过...
这两个文件与`Global.asax`和`AssemblyInfo.cs`的功能类似,分别提供了`Global.asax`的C#代码和项目特定的元数据。 通过分析这个源码,初学者可以了解ASP.NET中如何处理用户登录验证,包括使用Forms ...
4. `Global.asax.cs`:这是`Global.asax`对应的C#代码文件,包含事件处理程序的实现细节。开发者在这里编写代码来响应`Global.asax`中声明的事件。 5. `Masterpage.Master`和`.designer.cs`:`Masterpage.Master`是...
ASP.NET提供了一系列机制来帮助开发者实现这一目标,其中一种常用的方法是在Global.asax文件中利用`Application_BeginRequest`事件来过滤恶意参数提交。 #### Global.asax文件的作用 Global.asax文件是ASP.NET应用...
1. **Global.asax**:这是一个应用程序全局事件处理程序文件,用于处理如应用启动、结束、会话开始和结束等全局事件。在这个项目中,可能包含了对DataGrid初始化或数据绑定的设置。 2. **WebForm1.aspx**:这是主...
【标题】:“C#留言系统实现详解” 在编程领域,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用程序、Web应用以及游戏开发中占据重要地位。本知识点将聚焦于一个基于C#实现的“我的留言板”系统,...
【ASP.NET Forms验证详解】 ASP.NET中的Forms验证是构建安全Web应用程序的重要组成部分,它主要用于确保用户输入的数据符合预设的规则和格式,从而避免潜在的安全风险。本教程以"世界上最简单的ASP.net的Forms验证...
《网上购物系统B/S结构与ASP.NET应用详解》 在当今信息化社会,网上购物系统已经成为了日常生活的一部分。本文将深入探讨一个基于B/S(Browser/Server,浏览器/服务器)架构的网上购物系统,该系统使用ASP.NET技术...
《ASP.NET网上书店系统设计与实现详解》 ASP.NET是一种由微软公司开发的服务器端Web应用程序框架,用于构建动态网站、Web应用和Web服务。在本项目“ASP.NET网上书店(源程序+LW+答辩PPT)”中,开发者利用ASP.NET技术...
《易宝支付Springboard程序详解》 易宝支付Springboard是一个专门为解决无备案网站接入易宝支付问题而设计的程序。在很多情况下,由于政策要求,未备案的网站无法直接与支付平台进行对接,这就限制了网站的收款功能...
1. **编辑Global.asax文件**:首先,需要在项目的`App_Start`目录下找到或创建`Global.asax`文件。 2. **添加Application_BeginRequest事件**:在这个文件中,需要添加一个事件处理程序`Application_BeginRequest`,...
本文将深入解析如何在ASP.NET应用程序中实现在线人数的统计功能,通过分析Global.asax文件中的关键代码段,提供一个完整的解决方案。 #### 一、Global.asax文件的角色 `Global.asax`是ASP.NET应用程序的核心配置...
- Global.asax.cs:Global.asax文件的C#代码,实现全局事件处理。 6. ADO.NET:ASP.NET应用通常使用ADO.NET与SQL Server进行数据交互,包括SqlConnection、SqlCommand、SqlDataReader等对象,用于执行SQL语句和...
4. **Global.asax.cs**:全局应用程序类的代码文件,实现了Global.asax中声明的事件处理方法。 5. **SamplesMvc3.0.csproj**:项目文件,包含了项目的构建信息和引用。 6. **from.gif**:可能是一个示例图片,用于...
3. **Global.asax**:此文件是ASP.NET应用程序的全局事件处理程序,可以处理应用程序级别的事件,如启动、结束、会话开始和结束等。在聊天室中,可能会用它来初始化或配置应用范围内的设置。 4. **ChatRoom.aspx**...