我正在用 ASP.NET 2.0 (C#) 开发 webapp。我有问题要解决问题。
应用程序应该显示在线用户,并且只有管理员应该显示用户名。我使用 Application[] 对象来存储用户名和计数,在 Globall.asax 文件中设置值。
在下面的代码中,我将显示与计数器相关的部分:
protected void Application_Start(object sender, EventArgs e){
Application["OnlineCounter"] = 0;
}
protected void Session_Start(Object sender, EventArgs e){
// Code that runs when a new session is started
if (Application["OnlineCounter"] != null){
Application.Lock();
Application["OnlineCounter"] = ((int)Application["OnlineCounter"]) + 1;
Application.UnLock();
}
}
protected void Session_End(Object sender, EventArgs e){
// Code that runs when a new session is started
if (Application["OnlineCounter"] != null){
Application.Lock();
Application["OnlineCounter"] = ((int)Application["OnlineCounter"]) - 1;
Application.UnLock();
}
}
在我的本地机器上使用此代码,我可以正确计算在线用户。相反,当我在服务器(Windows 2003 Server 和 IIS6)上发布此代码时,我发现了以下问题:使用 3 个不同的用户(使用不同的浏览器)从我的机器访问,我将在单个页面中只看到 1 个用户(在每个浏览器中我只看到 1 个在线用户)!
这有什么问题吗?任何建议表示赞赏。谢谢