C# WebForm的Global.asax文件 Global.asax文件是可选的,只有希望在程序的生命周期做某些操作才需要创建


public class Global : System.Web.HttpApplication { /// Web应用程序第一次启动时调用该方法,并且该方法只被调用一次(就是部署到IIS上之后第一次启动这个程序的时候调用一次)。 protected void Application_Start(object sender, EventArgs e) { } /// 开始会话。(用户通过浏览器第一次访问我们网站中的某个页面,这时建立会话,但是当该用户通过浏览器再次访问其它的页面时,该方法不会被执行) /// (应用场景:统计网站在线人数,注意点就是,一定要把Application写到数据库) protected void Session_Start(object sender, EventArgs e) { // Application:服务端的状态保持机制。放在该对象中的数据是共享的,这点跟Cache一样,但是Application是要程序员手动加锁解锁,但是Cache不一样,内部微软都自动加锁解锁 Application.Lock(); int count = Convert.ToInt32(Application["count"]); count++; Application["count"] = count; Application.UnLock(); } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } /// 全局的异常捕捉,在MVC中我们经常都是写一个BaseController,然后每个控制器都继承这个BaseController,然后都统一在BaseController这个控制器里面完成捕捉错误,然后写到log4net这个第三方框架上。但是在WebForm里面,我们要捕捉错误就在这个方法完成 protected void Application_Error(object sender, EventArgs e) { //1.0通过下面这个方法捕捉到错误 //Exception ex = HttpContext.Current.Server.GetLastError(); //2.0下面就跟MVC一样,把错误ex.Message写到Log4Net上 } /// 会话结束(应用场景:统计网站在线人数,注意点就是,一定要把Application写到数据库) protected void Session_End(object sender, EventArgs e) { Application.Lock(); int count = Convert.ToInt32(Application["count"]); count--; Application["count"] = count; Application.UnLock(); } protected void Application_End(object sender, EventArgs e) { } }