我正在开发一个学生参加考试的网络应用程序。这里需要显示哪些学生在管理员和教师面板中登录。首先,我更新了一个名为flag的数据库中的列,在登录时间变为1,并且在注销时变为0.但是当浏览器强行关闭时,它无法更新。为此,我使用了java脚本方法,只要我们导航到另一个页面并显示学生退出就会触发。
是否有相同的解决方案。
答案 0 :(得分:1)
一旦关闭浏览器而没有注销,就没有简单的方法来更新用户的状态。您可以在 Global.asax 中使用 Session_End 事件,但会话到期时(通常为20分钟)会触发该事件。 此外,在Session_End中,您没有关于经过身份验证的用户的信息,只有会话ID。
如果您使用ASP.NET Membership来验证用户身份,那么有一种方法可以满足您的需求
Membership.GetNumberOfUsersOnline()
答案 1 :(得分:1)
在 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();
}
或
如果您使用内置的ASP.NET
会员资格提供程序,则可以使用非常方便的Membership.GetNumberOfUsersOnline()方法。