1

我想在我的 ASP.NET MVC 4.0 网站中捕获网站流量。我已经做到了

我的基本控制器:

 public class BlogActionFilterAttribute : ActionFilterAttribute
        {
            public override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                base.OnResultExecuting(filterContext);
                BaseModels.StoreSessionData(filterContext);
            }
        }

全球.ASAX:

protected void Application_Start()
        {

            // Register global filter
            GlobalFilters.Filters.Add(new BaseController.SiteActionFilterAttribute());
}

到目前为止,一切都很好。

如果我的操作视图有任何渲染操作或操作助手,那么我的会话事件正在我的数据库中存储另一条新记录,这是因为我的全局过滤器是针对ActionFilterAttribute.

如果一个页面请求有多个操作,那么我的会话事件将捕获所有这些操作作为事件。

如何限制我的过滤器在每页请求上工作,而不是在操作及其子操作上工作?

4

1 回答 1

0

如果我正确理解你,你想限制你 StoreSessionData 的操作类型。我假设您要限制的一种类型是 ChildActions。如果是这样,这就是你将如何做到这一点”

 public class BlogActionFilterAttribute : ActionFilterAttribute
        {
            public override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                base.OnResultExecuting(filterContext);
                if (!filterContext.IsChildAction)
                    BaseModels.StoreSessionData(filterContext);
            }
        }
于 2013-04-01T04:26:36.103 回答