首页 > 代码库 > WebForm的Global.asax文件

WebForm的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)
        {

        }
    }

  

WebForm的Global.asax文件