【发布时间】:2012-07-21 13:48:51
【问题描述】:
在我的 ASP.NET MVC3 Web 应用程序中,我想添加一条小消息,显示当前浏览该站点的用户数量。
我目前正在使用Session_Start 和Session_End 应用程序事件来增加或减少 Global.asax 中的静态属性。
这可行,但根本不精确。由于我的会话超时配置为 2000 万,因此更新之间存在巨大延迟。
有没有更优雅、更精确的方法?
我曾想过通过 AJAX 调用一个动作,它只是在 window.onbeforeunload javascript 事件上执行 Session.Abandon(),但每次用户更改页面时都会调用它。有没有办法确定用户何时关闭浏览器或离开域?
欢迎提供任何提示、cmets 或代码示例!
这是当前代码的相关部分:
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();
}
...
}
【问题讨论】:
-
没有办法可靠地实现这一点。
标签: asp.net asp.net-mvc-3 session count