我有一个执行日志记录的 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/