1

我应该为我们的ASP.NET MVC 4Web 应用程序创建一个内部统计机制。我们不会使用外部的,比如Google Analyticsor Glimpse。因为我不确定我是否可以从他们的 API 中提取所需的数据。

我们期望这个机制很像Google Analytics包括页面点击数、引用者、关键字等。但只是针对部分页面而不是全部。我们希望在我们自己的页面和报告中使用这些数据。

现在我有2个问题。Google Analytics忽略或Glimpse实施我自己的是否正确?如果是,每次访问网站时在数据库中保存一条记录,然后使用这些记录来提取统计数据是否合理?

非常感谢任何帮助

4

1 回答 1

1

我认为你可以实现这两个 satistic。如果不了解您需要的业务逻辑,这很难说。但是,如果您需要有关每个请求的更详细信息(访问的用户角色、检索某些特定统计信息的控制器/操作名称、对特定资源的日志访问等),您可以使用操作过滤器轻松实现这一点。

public class StatisticFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        if (filterContext.IsChildAction) //if action call was from view like @Html.Action do nothing
            return;
        var CurrentUser = filterContext.RequestContext.HttpContext.User;
        if (CurrentUser.IsInRole("some_role"))
            return; //write logic for this role
        string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;            
        string actionNaem = filterContext.ActionDescriptor.ActionName;
        //here the id of the accessed resource - document, sale, page etc. 
        string id = filterContext.RequestContext.RouteData.Values["id"].ToString(); 
    }

}

就这样。您可以通过您需要的任何逻辑来扩展它。在我的项目中,我有一个带有字段的统计表:日期 - 时间戳,

控制器 - 字符串,

动作 - 字符串,

id - bigint

方法 - 字符串(POST,GET ...如果发布 - 提交)

user_id - bigint

并为每个执行的请求插入记录。所以我有关于任何统计请求的最重要信息。

于 2013-06-13T14:15:18.873 回答