1

我写了一个静态类,并假设在所有会话之间共享它的成员。它适用于在同一台计算机上运行的所有浏览器,但数据不会在来自不同位置的不同用户之间共享。我的网站是用 ASP.NET 编写的

这是我的课

public static class GlobalPool
{
    public static List<string> OnlineUsers;
}

我将 Global.asax 中的 OnlineUSers 属性实例化为

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    GlobalPool.OnlineUsers = new List<string>(100);
}

每当用户登录我的网站时,我都会添加用户名:

public void Login(int aMemberSerial) 
{ 
    User = new MemberDataAccess().Read(aMemberSerial); 
    new MemberDataAccess().Login(User); 
    GlobalPool.OnlineUsers.Add(User.Username); 
    Message = PostBusiness.NewPost(User); 
}
4

1 回答 1

0

这不是健壮的代码。ASP.NET 应用程序会定期回收(应用程序池),因此您的所有数据都会消失。解决此问题的最佳方法是将列表存储在数据库中,当 Session 过期时,从数据存储中删除该用户。

于 2012-08-06T00:12:15.273 回答