C#asp.net MVC:何时更新LastActivityDate?

Osk*_*lin 12 c# asp.net-mvc asp.net-membership

我正在使用ASP.NET MVC并创建一个公共网站.我需要跟踪在线用户.我看到asp.net中这样做的标准方法是跟踪LastActivityDate.我的问题是我应该何时更新?

如果我每次用户点击某处都更新它,我会觉得性能退缩.但是,如果我不这样做,那些只能浏览的人将被列为离线状态.

在asp.net MVC中执行此操作的最佳方法是什么?

Jab*_*Jab 6

只需在主页底部放置一个ajax javascript调用即可跟踪此信息.

此时不要担心性能问题.如果它已经实施并且您认为它是一个问题,那么回过头来寻找更好的解决方案.如此简单的东西不应该是性能问题.

试想一下像谷歌分析.它位于数百万页的底部,对这些网站的用户体验几乎没有影响.


Ral*_*h N 6

刚遇到同样的问题,这是我对MVC用户的回答:

我们的想法是为每个页面加载触发Membership.GetUser("..",true).这将自动更新LastActivityDate.

我把它放在"RegisterGlobalFilters"下的global.asax中:

filters.Add(new MembershipTriggerLastActivityDate());
Run Code Online (Sandbox Code Playgroud)

我创建了一个新类,如下所示:

class MembershipTriggerLastActivityDate : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            MembershipUser user = Membership.GetUser(filterContext.HttpContext.User.Identity.Name, true);
        }   
        base.OnActionExecuting(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)