发布网友 发布时间:2024-10-23 20:51
共1个回答
热心网友 时间:2024-11-01 22:16
其实需要配合使用的,我帮你搜了一个答案,管用。以下讲解:
记录网站历史访问量,并可记录网站在线人数,实现此功能的神秘之处原来在于global.asax文件中
首先要明确两个对象application 和session,分别是全局变量控制与会话管理
历史访问量需要每次网站结束运行后载入数据库,下次网站运行时再次取出,而在线人数,则为即时统计
代码如下:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
DataAccess da = new DataAccess();
string sql = "select * from countpeo";
int count = Convert.ToInt32(da.SqlExecuteScalar(sql));
Application["total"] = count ; //总人数初始
Application["online"] = 0; //在线人数初始
da.ConClose();
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock(); //采用访问控制,防止并发处理
//网站被访问,访问总量与在线人数需同时加一
Application["total"] = (int)Application["total"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
//访问结束,访问总量不变,在线人数减一
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
DataAccess da1 = new DataAccess();
string sql1 = "update countpeo set num="+Application ["count"].ToString ();
bool judge=da1.SqlExecuteNonQuery(sql1);
}
最后在想要出现统计结果的页面添加相应的控件,加上如下代码即可实现此功能
protected void Page_Load(object sender, EventArgs e)
{
this.Label3.Text = Application["total"].ToString();
this.Label4.Text = Application["online"].ToString();
}