我在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。 问题是,我只看到从我的计算机连接的会话,我没有看到所有其他用户连接,是什么错?