使用ASP.NET MVC 3和Razor视图进行用户跟踪

11

当使用ASP.NET MVC 3中的Razor视图时,实现用户跟踪的最佳方法是什么?

在WebForms中,我会在masterpage中放置一些代码来使用cookie并在数据库中记录一个人访问的站点上的每个URL,但我不确定在ASP.NET MVC中应该在哪里实现这段代码。

2个回答

21

我想,最好的方法是创建一个全局操作过滤器,并在那里跟踪访问。

创建一个操作过滤器属性:

public class UserTrackingActionFilterAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext context)
    {
        base.OnResultExecuting(context);

        //save url, userId from session, etc...
    }
}

在 global.asax 中将其注册为全局过滤器:

protected void Application_Start()
{      
    // Register global filter
    GlobalFilters.Filters.Add(new UserTrackingActionFilterAttribute());

    RegisterGlobalFilters(GlobalFilters.Filters);
}

就这些了。不错吧?


1
太棒了,正是我在寻找的。对于其他人寻找的话,你可以使用 HttpContext 来获取在控制器中可以访问的 RequestResponse 等内容。context.HttpContext.Request.Url。我想这就是你可以获取 URL 等信息的方式。 - TankorSmash
还有一个字符串url = Request.RawUrl; - JoshYates1980

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接