在.NET中查看站点中的所有会话

时间:2014-01-09 07:13:12

标签: c# .net session

我在C#中使用.net构建了一个WebApp。 我想查看网站中所有在线会话的列表。 所以我在global.asax页面中写了这个:

protected void Session_Start(object sender, EventArgs e)
{
    Application.Lock();
    List<string[]> onlineUsers = Application["onlineUsers"] as List<string[]>;
    string[] onlineUser = {Session.SessionID.ToString(), ""};
    onlineUsers.Add(onlineUser);
    Application.UnLock();
}

protected void Session_End(object sender, EventArgs e)
{
    Application.Lock();
    List<string[]> onlineUsers = Application["onlineUsers"] as List<string[]>;
    string[] toRemove = null;
    foreach(string[] user in onlineUsers){
       if(user[0] == Session.SessionID.ToString()){
          toRemove = user;
          break;
          }
       }
       if (toRemove != null)
          onlineUsers.Remove(toRemove);
    Application["onlineUsers"] = onlineUsers;
    Application.UnLock();
}

然后当用户登录时我正在调用此函数:

public static void afterLogIn(string userName)
{
   HttpContext.Current.Application.Lock();
   List<string[]> onlineUsers = HttpContext.Current.Application["onlineUsers"] as List<string[]>;
   foreach (string[] user in onlineUsers)
   {
      if (user[0] == HttpContext.Current.Session.SessionID.ToString())
      {
         user[1] = userName;
         break;
      }
    }
    HttpContext.Current.Application["onlineUsers"] = onlineUsers;
    HttpContext.Current.Application.UnLock();
}

所以在它之后我在aplication [“onlineUsers”]中有一个列表,而不是包含所有的userNames和ID。 问题是,我只看到从我的计算机连接的会话,我没有看到所有其他用户连接,是什么错?

0 个答案:

没有答案