Global全局应用程序类

这个文件名一定不能改!!!

放在文件根目录下!

web应用程序第一次启动时调用该方法,只执行一次,后续用户的请求都不会执行这个方法,

网站 web应用程序的入口 ,不是.net entif..w 入口 ,相当于winform Main函数,这个winform程序的入口

完成整个web应用程序配置

Application_BeginRequest 代表请求管道的第一个事件

如果想注册第2个事件,在Application_BeginRequest方法下写一个方法 (注意签名,命名规范)

重点方法

 1    /// <summary>
 2         /// 全局的异常处理点.捕获异常信息
 3         /// (如果其他页面出错,都会跳到这个页面)
 4         /// 若页面方法中有try catch 它就不跳到这个方法了
 5         /// </summary>
 6         /// <param name="sender"></param>
 7         /// <param name="e"></param>
 8         protected void Application_Error(object sender, EventArgs e)
 9         {
10             //捕获异常信息 返回一个异常对象
11            Exception ex =HttpContext.Current.Server.GetLastError();
12             //日志一般用开源组件记录 //Log4Net 开源组件
13          //   ex.Message
14         }
全局的异常处理点.捕获异常信息

不允许多人同时处理一个文件,所以就需要一把"锁",但是这样性能会变差,因为一个用户写数据,其他人只能干等,这是"队列"就出来了

往"队列"写数据,先把你的数据放在内存里,你就可以做饭去了

队列是对内存的操作,特点:速度快

操作系统提供概念: 生产者消费者模式 来解决高并发,队列解决

使用管道事件注册一个方法或使用

1.自己定义一个类

2.在global里写

开源项目

定时任务框架

 Global类下方法使用

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.SessionState;
 7 
 8 namespace Web
 9 {
10     public class Global : System.Web.HttpApplication
11     {
12         /// <summary>
13         /// web应用程序第一次启动时调用该方法,并且该方法只被调用一次
14         /// 用户把网站部署iis上
15         /// </summary>
16         /// <param name="sender"></param>
17         /// <param name="e"></param>
18         protected void Application_Start(object sender, EventArgs e)
19         {
20 
21             
22         }
23         /// <summary>
24         /// 开始会话.(用户通过浏览器第一次访问我们网站的页面,这时建立会话,服务器返回这个SessionId给浏览器,但是当该用户
25         /// 通过浏览器再次访问其他的页面带这SessionId时,该方法不会被执行.
26         /// 若用户关掉浏览器重新打开,那重新执行该方法
27         /// )
28         /// </summary>
29         /// <param name="sender"></param>
30         /// <param name="e"></param>
31         protected void Session_Start(object sender, EventArgs e)
32         {
33             //统计页面访问人数
34             //Application也是一种状态保持机制,放在该对象中的数据是共享的.
35             //Cache 也是共享的,微软内部实现加锁解锁机制
36             Application.Lock();
37             int count = Convert.ToInt32(Application["count"]);
38             count++;
39             Application["count"] = count;
40             Application.UnLock();//必须要加锁解锁
41         }
42 
43         protected void Application_BeginRequest(object sender, EventArgs e)
44         {
45 
46         }
47 
48         protected void Application_AuthenticateRequest(object sender, EventArgs e)
49         {
50 
51         }
52         /// <summary>
53         /// 全局的异常处理点.捕获异常信息
54         /// (如果其他页面出错,都会跳到这个页面)
55         /// 若页面方法中有try catch 它就不跳到这个方法了
56         /// </summary>
57         /// <param name="sender"></param>
58         /// <param name="e"></param>
59         protected void Application_Error(object sender, EventArgs e)
60         {
61             //捕获异常信息 返回一个异常对象
62            Exception ex =HttpContext.Current.Server.GetLastError();
63             //日志一般用开源组件记录 //Log4Net 开源组件
64          //   ex.Message
65         }
66         /// <summary>
67         /// 会话结束,用户关浏览器不会执行,20分钟后这个用户没有对服务器发请求,服务器才执行此方法
68         /// </summary>
69         /// <param name="sender"></param>
70         /// <param name="e"></param>
71         protected void Session_End(object sender, EventArgs e)
72         {
73             Application.Lock();
74             int count = Convert.ToInt32(Application["count"]);
75             count--;
76             Application["count"] = count;
77             Application.UnLock();//必须要加锁解锁
78         }
79         /// <summary>
80         /// 很多情况这个情况没方法调用
81         /// </summary>
82         /// <param name="sender"></param>
83         /// <param name="e"></param>
84         protected void Application_End(object sender, EventArgs e)
85         {
86 
87         }
88     }
89 }
Global方法描述
原文地址:https://www.cnblogs.com/ligtcho/p/6629619.html