使用Global.asax全局变量可以避免刷新页面导致计数器刷新。
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码,IIS重新启动时刷新计数器。
Application["count"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代码,会话建立,计数器+1,防止错误先锁定后解锁。重复刷新页面不会更改计数器,只有建立新会话才可以。
Application.Lock();
Application["count"] = (int)Application["count"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。此处主要是用来统计在线人数,如只需要计数,可以不需要此处代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["count"] = (int)Application["count"] - 1;
Application.UnLock();
}
protected void Page_Load(object sender, EventArgs e)
{
//页面中直接使用Application["count"]。
Response.Write("你是本网站第"+Application["count"]+"个访问者");
}
注意:Application与Session的区别。前者为应用程序的变量,后者为会话的变量。则前者保持时间长,不得乱用。