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アプリケーションは定期的にリサイクル(アプリプール)するため、すべてのデータが失われます。これに取り組む最善の方法は、リストをデータベースに保存し、セッションの有効期限が切れたら、そのユーザーをデータストアから削除することです。

于 2012-08-06T00:12:15.273 に答える