写在Global.asax全局文件中
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application.Add("online", 0);
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
}
记录在线人数永远都不可能是个精确的值,因为它要受时间和性能的约束