c# - 如何让 ActionFilters 和 OutputCaching 一起工作?

标签 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 继承,它会必须运行我的代码,然后才能到达基调用。然而我被证明是错误的,不知何故我的代码只会执行一次。

最佳答案

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

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

关于c# - 如何让 ActionFilters 和 OutputCaching 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354625/

相关文章:

javascript - 返回 json 数据到 $.ajax 函数

c# - 将 Command 对象/Reader 传递给函数是个好主意吗?

c# - 在 Web API 中设置 "Content-Disposition"HTTP header

c# - 如何将 DbSet 转换为 ObservableCollection

javascript - Ajax 完全没有被调用

c# - 如何与 C# 共享 Visual C++ DLL 中的类?

asp.net - 尝试使用 MYSql 失败更新 2 个表

c# - ASP.NET MVC OWIN 和 SignalR - 两个 Startup.cs 文件

c# - 无效的 .afpkg 文件 - 如何查找更多信息?

c# - DynamoDBContext 是否支持池化?