当使用ASP.NET MVC 3中的Razor视图时,实现用户跟踪的最佳方法是什么?
在WebForms中,我会在masterpage中放置一些代码来使用cookie并在数据库中记录一个人访问的站点上的每个URL,但我不确定在ASP.NET MVC中应该在哪里实现这段代码。
当使用ASP.NET MVC 3中的Razor视图时,实现用户跟踪的最佳方法是什么?
在WebForms中,我会在masterpage中放置一些代码来使用cookie并在数据库中记录一个人访问的站点上的每个URL,但我不确定在ASP.NET MVC中应该在哪里实现这段代码。
我想,最好的方法是创建一个全局操作过滤器,并在那里跟踪访问。
创建一个操作过滤器属性:
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);
}
就这些了。不错吧?
HttpContext
来获取在控制器中可以访问的Request
和Response
等内容。context.HttpContext.Request.Url
。我想这就是你可以获取 URL 等信息的方式。 - TankorSmash