【问题标题】:How to have ActionFilters and OutputCaching work together?如何让动作过滤器和输出缓存一起工作?
【发布时间】:2011-09-08 21:16:37
【问题描述】:

我有一个 ActionFilter 可以记录日志。我希望它记录进入服务器的请求和参数。这工作正常。但是,当我添加 OutputCaching 时,这只会记录第一个请求而不会记录其他请求。

我什至尝试创建一个行为如下的 ActionFilter:

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

        base.OnActionExecuting(filterContext);
    }
}

我想如果我从 outputcache 继承,它会 HAVE 在它到达基本调用之前运行我的代码。然而事实证明我错了,不知何故我的代码只会执行一次。

【问题讨论】:

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


    【解决方案1】:

    好吧,据我所知,这个系统中有一个“hack”,它确保每次都执行授权属性,而不管缓存。也许你可以让你的过滤器实现 IAuthorizationFilter 并在 OnAuthorization 方法中完成你的工作。是的,这是一个令人讨厌的技巧,但我认为仍然比“破解”缓存系统本身要好。

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

    【讨论】:

    • 现在这是一个有趣的解决方案。虽然这不是缺点,但授权属性上没有设置唯一允许的每个操作的东西吗?
    • 不,afaik 您可以在操作中使用任意数量的授权属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2013-10-30
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多