简介
Global.asax是一个文本文件,它提供全局可用代码。这些代码包括应用程序的事件处理程序以及会话事件、方法和静态变量。有时该文件也被称为应用程序文件。
Global.asax 文件继承自 HttpApplication 类,Global.asax 文件中的任何代码都是它所在的应用程序的一部分。
每个应用程序在其根目录下只能有一个Global.asax文件。不过这个文件是可选的,如果删除掉Global.asax文件,应用程序将对所有事件应用由 HttpApplication类提供的默认行为,不会出现问题。
作用
Global.asax文件主要用来处理更高级别的应用程序事件,如Application_Start、Application_End、Session_Start、Session_End等。
Global.asax文件中的事件,几乎涵盖了应用程序运行的任何节点。你可以在应用程序启动、应用程序遇到异常、用户会话超时等节点添加处理事件。
Global.asax的处理事件
Global.asax 文件包含以下事件:
- Application_Init:在应用程序被实例化或第一次被调用时,该事件被触发。对于所有的HttpApplication 对象实例,它都会被调用。
- Application_Disposed:在应用程序被销毁之前触发。这是清除以前所用资源的理想位置。
- Application_Error:当应用程序中遇到一个未处理的异常时,该事件被触发。
- Application_Start:在HttpApplication 类的第一个实例被创建时,该事件被触发。它允许你创建可以由所有HttpApplication 实例访问的对象。
- Application_End:在HttpApplication 类的最后一个实例被销毁时,该事件被触发。在一个应用程序的生命周期内它只被触发一次。
- Application_BeginRequest:在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。
- Application_EndRequest:针对应用程序请求的最后一个事件。
- Application_PreRequestHandlerExecute:在 ASP.NET 页面框架开始执行诸如页面或 Web 服务之类的事件处理程序之前,该事件被触发。
- Application_PostRequestHandlerExecute:在 ASP.NET 页面框架结束执行一个事件处理程序时,该事件被触发。
- Applcation_PreSendRequestHeaders:在 ASP.NET 页面框架发送 HTTP 头给请求客户(浏览器)时,该事件被触发。
- Application_PreSendContent:在 ASP.NET 页面框架发送内容给请求客户(浏览器)时,该事件被触发。
- Application_AcquireRequestState:在 ASP.NET 页面框架得到与当前请求相关的当前状态(Session 状态)时,该事件被触发。
- Application_ReleaseRequestState:在 ASP.NET 页面框架执行完所有的事件处理程序时,该事件被触发。这将导致所有的状态模块保存它们当前的状态数据。
- Application_ResolveRequestCache:在 ASP.NET 页面框架完成一个授权请求时,该事件被触发。它允许缓存模块从缓存中为请求提供服务,从而绕过事件处理程序的执行。
- Application_UpdateRequestCache:在 ASP.NET 页面框架完成事件处理程序的执行时,该事件被触发,从而使缓存模块存储响应数据,以供响应后续的请求时使用。
- Application_AuthenticateRequest:在安全模块建立起当前用户的有效的身份时,该事件被触发。在这个时候,用户的凭据将会被验证。
- Application_AuthorizeRequest:当安全模块确认一个用户可以访问资源之后,该事件被触发。
- Session_Start:在一个新用户访问应用程序 Web 站点时,该事件被触发。
- Session_End:在一个用户的会话超时、结束或他们离开应用程序 Web 站点时,该事件被触发。
实例说明
我们以Application_Error(程序遇到未处理的异常时触发)事件做一个实例说明。我们现在GLobal.asax文件中注册Application_Error事件,如下:
protected void Application_Error(object sender, EventArgs e)
{
//获取前一个触发到的异常信息
Exception ex = Server.GetLastError().GetBaseException();
//将前一个异常信息清除。不清除会触发错误详情页(黄页)。
Server.ClearError();
//将错误信息返回到客户端
Response.Write("Error:" + ex.Message);
}
当应用程序触发未处理的异常时,会触发该事件。我们在事件中会给前台返回一个错误消息。
然后我们在上篇文章创建的MVC测试项目中,添加一个Action方法。

我们请求这个Action,显示如下界面:

需要注意的是,我们在Application_Error事件中,必须将捕获到的Error清除掉,也就是这行代码:Server.ClearError();。否则将会引发ASP.Net的详细错误页面(俗称黄页)。
总结
本文我们了解到了Global.asax文件的作用以及包含的处理事件,我们根据Application_Error实例能大概了解到事件的使用方法。在实际项目中,我们可以使用Global.asax统一管理应用程序中注册、登录、异常等等事件,这样可以使我们的应用程序更加规范,更加易于管理。
-
代码
+关注
关注
30文章
4941浏览量
73137 -
应用程序
+关注
关注
38文章
3342浏览量
59921 -
Asp.net
+关注
关注
0文章
36浏览量
14201 -
Global
+关注
关注
0文章
12浏览量
8658
发布评论请先 登录
ASP.net Ajax开发.zip
《ASP.NET 2.0网络开发技术》 ASP.NET 2.0核心对象.pdf
《ASP.NET 2.0网络开发技术》 走进ASP.NET 2.0.pdf
北大青鸟asp.net教程
Programming Microsoft ASP.NET
ASP.NET课程设计案例精编
Asp.net MVC框架自定义视图引擎的实现
ASP.NET MVC5教学之如何创建MVC文件架构
ASP.NET MVC5教学之过滤器(上)
ASP.NET MVC5教学之过滤器(下)

ASP.NET MVC5教学之Global.asax文件
评论