Global.asax文件,也称ASP.NET应用程序文件,是一个可选文件,其中包含用于响应ASP.NET或者HTTP模块引发的应用程序级别(application-level)和会话级别(session-level)事件的代码。
详见:Global.asax Syntax)
简述
- Global.asax文件驻留在ASP.NET应用程序的根目录中。在运行时,Global.asax被解析并编译为从HttpApplication基类派生的动态生成的.NET Framework类。
- ASP.NET 自动拒绝对Global.asax文件的任何直接URL请求,外部用户无法下载或者查看其中的代码。
- Global.asax文件是可选的,只有在需要处理应用程序或者会话事件是才创建它。
格式
通过VisualStudio创建Global.asax,自动生成代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState;
namespace CHCMVC { public class Global : System.Web.HttpApplication //Global继承HttpApplication {
protected void Application_Start(object sender, EventArgs e) { //在HttpApplication类的第一个实例被创建时,该事件触发 //允许你创建被所有HttpApplication实例访问的对象 }
protected void Session_Start(object sender, EventArgs e) { //在一个新用户访问应用程序Web站点时,该事件触发 }
protected void Application_BeginRequest(object sender, EventArgs e) { //在接收到一个应用程序请求时,该事件触发 //请求一般是用户输入的URL }
protected void Application_AuthenticateRequest(object sender, EventArgs e) { //在安全模块建立起当前用户的有效身份时,该事件触发 //用户的凭据将会被验证 }
protected void Application_Error(object sender, EventArgs e) { //当应用程序中遇到一个未处理的异常时,该事件触发 }
protected void Session_End(object sender, EventArgs e) { //在一个用户的会话超时、结束或者离开应用程序Web站点,该事件触发 }
protected void Application_End(object sender, EventArgs e) { //在HttpApplication类的最后一个实例被销毁时,该事件触发 //在应用程序的生命周期内,只被触发一次 } } }
|
事件
- ASP.NET为每个请求创建ASP.NET核心对象,如HttpContext、HttpRequest、HttpResponse。在初始化所有核心对象之后,通过创建HttpApplication类的实例来启用应用程序。
- 如果应用程序具有Global.asax文件,则ASP.NET会创建一个Global.asax类的实例,来表示应用程序。
- ASP.NET使用命名约定:Application _event (如:Application_Start)自动将应用程序事件绑定到Global.asax文件中的处理程序,类似于ASP.NET页面方法自动绑定到事件的方式。
- Application_Start和Application_End方法是特殊方法,不表示HttpApplication的事件,ASP.NET在应用程序域的生命周期内调用它们一次,而不是为每个HttpApplication实例调用它们。