如何让ActionFilters和OutputCaching一起工作?

时间:2011-09-08 21:16:37

标签: c# asp.net asp.net-mvc outputcache action-filter

我有ActionFilter进行记录。我希望这能记录进入服务器的请求和参数。这很好用。但是,当我添加OutputCaching时,这只会记录第一个请求而不记录其他请求。

我甚至尝试过创建一个行为如此的ActionFilter:

public class OutputCacheLoggingFilterAttribute : OutputCacheAttribute
{     
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //Do my stuff

        base.OnActionExecuting(filterContext);
    }
}

我想如果我从outputcache继承它将 HAVE 在它进入基本调用之前运行我的代码。然而,我被证明是错误的,不知怎的,我的代码只会执行一次。

1 个答案:

答案 0 :(得分:0)

嗯,据我所知,这个系统中存在“hack”,确保每次执行授权属性,无论缓存如何。也许你可以使你的过滤器实现IAuthorizationFilter并在OnAuthorization方法中完成你的工作。是的,这是一个讨厌的伎俩,但我认为仍然比“黑客”缓存系统更好。

让我们知道它是否有效(我从未测试过它,只是我头脑中的第一个想法:)