`
shirlly
  • 浏览: 1652339 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

Global.asax详解

    博客分类:
  • .NET
阅读更多
在网上找了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


转自:http://hi.baidu.com/mycolorwind/blog/item/45384980228cbfdf9023d960.html
分享到:
评论

相关推荐

    Global.asax文件、web.config文件详解(上)

    Global.asax文件 web.config文件 详解

    Global.asax

    **Global.asax 文件详解** 在ASP.NET框架中,`Global.asax`文件是一个至关重要的组件,它被用来处理应用程序级别的事件和全局性设置。这个文件的全称是`Application全球化.asax`,它是一个可选的脚本文件,通常用C#...

    asp.net global详解

    ASP.NET的Global.asax文件是Web应用程序的核心组件之一,它提供了全局范围内的代码执行环境,用于处理应用程序级和会话级的事件。这个文件通常位于应用程序的根目录下,是可选的,但如果存在,它将定义...

    asp.net 用sqlserver 实现session共享 (100%成功)

    ### ASP.NET 使用 SQL Server 实现 Session 共享详解 #### 一、背景介绍 在多站点环境下,如何实现用户在不同站点之间的Session信息共享成为了一个常见的需求。例如,在一个公司的内部环境中,可能存在多个子网站...

    SQL Server asp.net数据库安装程序代码

    10. **Global.asax.resx**:与Global.asax相关的资源文件,同样用于文本的国际化或本地化。 这些文件组合在一起,构成了一个完整的asp.net Web应用,其中包含了一个用于SQL Server数据库安装的流程。开发者可以通过...

    asp.net实用登录验证源码

    这两个文件与`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`是...

    Aap.net过滤恶意参数提交(Application_BeginRequest事件

    ASP.NET提供了一系列机制来帮助开发者实现这一目标,其中一种常用的方法是在Global.asax文件中利用`Application_BeginRequest`事件来过滤恶意参数提交。 #### Global.asax文件的作用 Global.asax文件是ASP.NET应用...

    EditNestedDataGrid

    1. **Global.asax**:这是一个应用程序全局事件处理程序文件,用于处理如应用启动、结束、会话开始和结束等全局事件。在这个项目中,可能包含了对DataGrid初始化或数据绑定的设置。 2. **WebForm1.aspx**:这是主...

    c#留言,我的留言板

    【标题】:“C#留言系统实现详解” 在编程领域,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用程序、Web应用以及游戏开发中占据重要地位。本知识点将聚焦于一个基于C#实现的“我的留言板”系统,...

    世界上最简单的ASP.net的Forms验证Demo

    【ASP.NET Forms验证详解】 ASP.NET中的Forms验证是构建安全Web应用程序的重要组成部分,它主要用于确保用户输入的数据符合预设的规则和格式,从而避免潜在的安全风险。本教程以"世界上最简单的ASP.net的Forms验证...

    网上购物系统 B/S 结构 asp.net

    《网上购物系统B/S结构与ASP.NET应用详解》 在当今信息化社会,网上购物系统已经成为了日常生活的一部分。本文将深入探讨一个基于B/S(Browser/Server,浏览器/服务器)架构的网上购物系统,该系统使用ASP.NET技术...

    ASP.NET网上书店(源程序+LW+答辩PPT).zip

    《ASP.NET网上书店系统设计与实现详解》 ASP.NET是一种由微软公司开发的服务器端Web应用程序框架,用于构建动态网站、Web应用和Web服务。在本项目“ASP.NET网上书店(源程序+LW+答辩PPT)”中,开发者利用ASP.NET技术...

    Yeepay.Springboard.rar_Springboard

    《易宝支付Springboard程序详解》 易宝支付Springboard是一个专门为解决无备案网站接入易宝支付问题而设计的程序。在很多情况下,由于政策要求,未备案的网站无法直接与支付平台进行对接,这就限制了网站的收款功能...

    aspx页面伪装成html

    1. **编辑Global.asax文件**:首先,需要在项目的`App_Start`目录下找到或创建`Global.asax`文件。 2. **添加Application_BeginRequest事件**:在这个文件中,需要添加一个事件处理程序`Application_BeginRequest`,...

    asp.net在线人数的统计

    本文将深入解析如何在ASP.NET应用程序中实现在线人数的统计功能,通过分析Global.asax文件中的关键代码段,提供一个完整的解决方案。 #### 一、Global.asax文件的角色 `Global.asax`是ASP.NET应用程序的核心配置...

    asp.net 新闻发布系统

    - Global.asax.cs:Global.asax文件的C#代码,实现全局事件处理。 6. ADO.NET:ASP.NET应用通常使用ADO.NET与SQL Server进行数据交互,包括SqlConnection、SqlCommand、SqlDataReader等对象,用于执行SQL语句和...

    MVC分页源码

    4. **Global.asax.cs**:全局应用程序类的代码文件,实现了Global.asax中声明的事件处理方法。 5. **SamplesMvc3.0.csproj**:项目文件,包含了项目的构建信息和引用。 6. **from.gif**:可能是一个示例图片,用于...

    ajax+asp.net 聊天室

    3. **Global.asax**:此文件是ASP.NET应用程序的全局事件处理程序,可以处理应用程序级别的事件,如启动、结束、会话开始和结束等。在聊天室中,可能会用它来初始化或配置应用范围内的设置。 4. **ChatRoom.aspx**...

Global site tag (gtag.js) - Google Analytics