在我的 ASP.NET MVC3 Web 应用程序中,我想添加一条小消息,显示当前浏览该站点的用户数量。
我目前正在使用应用程序事件Session_Start
来Session_End
增加或减少 Global.asax 中的静态属性。
这有效,但它根本不精确。由于我的会话超时配置为 2000 万,因此更新之间存在巨大延迟。
有没有更优雅、更精确的方法来做到这一点?
我曾想过通过 AJAX 调用一个动作,这只是Session.Abandon()
在window.onbeforeunload
javascript 事件上执行,但是每次用户更改页面时都会调用它。有没有办法确定用户何时关闭浏览器或离开域?
欢迎任何提示、评论或代码示例!
这是当前代码的相关部分:
public class MvcApplication : System.Web.HttpApplication
{
public static int UsersConnected { get; set; }
protected void Session_Start(object sender, EventArgs e)
{
Application.Lock();
UsersConnected++;
Application.UnLock();
}
protected void Session_End(object sender, EventArgs e)
{
Application.Lock();
UsersConnected--;
Application.UnLock();
}
...
}