了解asp.net Web应用程序中有多少用户在线

时间:2013-09-16 07:53:54

标签: asp.net

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

是否有相同的解决方案。

2 个答案:

答案 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()方法。