日期:2014-05-17 浏览次数:20954 次
本实例简单的实现了网站历史人数和当前在线人数的记录,主要涉及到Global.asax文件的使用和Application、Server对象的使用。
在Global.asax文件中的代码,首先在该文件中引入命名空间:<%@ Import Namespace="System.Data.SqlClient" %>
//应用程序开始 void Application_Start(object sender, EventArgs e) { //从数据库获得历史人数记录 SqlConnection con = new SqlConnection("server=.;database=countPeople;uid=sa;pwd=123456;"); con.Open(); SqlCommand cmd = new SqlCommand("select * from countPeople", con); int count = Convert.ToInt32(cmd.ExecuteScalar()); con.Close(); //添加应用程序级变量,记录历史访问人数 Application.Add("HistoryCount", count); //添加应用程序级变量,记录当前在线人数 Application.Add("OnlineCount",0); } //会话开始 void Session_Start(object sender, EventArgs e) { //防止并发造成的问题 Application.Lock(); //建立一个新会话后,人数+1 Application["HistoryCount"] = (int)Application["HistoryCount"] + 1; Application["OnlineCount"] = (int)Application["OnlineCount"] + 1; Application.UnLock(); } //会话结束 void Session_End(object sender, EventArgs e) { //会话结束,在线人数-1 Application.Lock(); Application["OnlineCount"] = (int)Application["OnlineCount"] - 1; Application.UnLock(); } //应用程序结束 void Application_End(object sender, EventArgs e) { SqlConnection con = new SqlConnection("server=.;database=countPeople;uid=sa;pwd=;"); con.Open(); SqlCommand cmd = new SqlCommand("update countPeople set num=" + Application["total"], con); cmd.ExecuteNonQuery(); con.Close(); }
Default.aspx.cs代码页:
protected void Page_Load(object sender, EventArgs e) { lblHistoryCount.Text = Application["HistoryCount"].ToString(); lblOnlineCount.Text = Application["OnlineCount"].ToString(); }