了解asp.net web应用程序中有多少用户处于联机状态

了解asp.net web应用程序中有多少用户处于联机状态,asp.net,Asp.net,我正在开发一个web应用程序,学生在其中进行考试。这里要求显示哪些学生登录了管理员和教员面板。首先,我更新了数据库中一个名为flag的列,该列在登录时变为1,在注销时变为0。但当浏览器强制关闭时,它无法更新。为此,我使用了java脚本方法,每当我们导航到另一个页面并显示学生注销时,该方法就会触发 是否有相同的解决方案。没有简单的方法可以在用户关闭浏览器而不注销时立即更新其状态。您可以在Global.asax中使用会话结束事件,但该事件将在会话到期时触发(通常为20分钟)。 此外,在会话结束时,您

我正在开发一个web应用程序,学生在其中进行考试。这里要求显示哪些学生登录了管理员和教员面板。首先,我更新了数据库中一个名为flag的列,该列在登录时变为1,在注销时变为0。但当浏览器强制关闭时,它无法更新。为此,我使用了java脚本方法,每当我们导航到另一个页面并显示学生注销时,该方法就会触发


是否有相同的解决方案。

没有简单的方法可以在用户关闭浏览器而不注销时立即更新其状态。您可以在Global.asax中使用会话结束事件,但该事件将在会话到期时触发(通常为20分钟)。 此外,在会话结束时,您没有关于经过身份验证的用户的信息,只有会话id

如果您使用ASP.NET成员身份验证用户,则有一种方法可以满足您的需要

Membership.GetNumberOfUsersOnline()

将此代码添加到您的Global.asax页面

public void Session_Start(object sender, EventArgs e)
{ 
 // Fires when the session is started 
 Application["UserCount"] = Convert.ToInt32(Application["UserCount"].ToString()) + 1;
}

public void Session_End(object sender, EventArgs e)
{ 
  // Fires when the session ends
  Application["UserCount"] = Convert.ToInt32(Application["UserCount"].ToString()) - 1;
}

将此代码添加到母版页上

private void Page_Load(System.Object sender, System.EventArgs e)
{ 
 //Put user code to initialize the page here
 this.lblUserCount.Text = "Users online " + Application["UserCount"].ToString();
}

private void Page_Load(System.Object sender, System.EventArgs e)
{ 
 //Put user code to initialize the page here
 this.lblUserCount.Text = "Users online " + Application["UserCount"].ToString();
}

如果您使用内置的
ASP.NET
成员资格提供程序,那么有一个非常方便的方法。

应用程序
保存
对象
,因此您可以简单地将值存储为
int
,而不是进行所有转换