C# 避免在ASP.NET MVC 5应用程序上执行OnResultExecuted筛选器';s动作

C# 避免在ASP.NET MVC 5应用程序上执行OnResultExecuted筛选器';s动作,c#,asp.net-mvc,asp.net-mvc-5,action-filter,C#,Asp.net Mvc,Asp.net Mvc 5,Action Filter,我正在开发一个MVC5应用程序,它有一个OnResultExecuted过滤器,将响应缓存设置为始终“无缓存无存储”: 但是我有一个动作需要缓存它的结果,所以我在上面设置了OutputCahce atribute [OutputCache(Duration =300, Location =System.Web.UI.OutputCacheLocation.Client)] 但是,由于过滤器的原因,它永远不会被缓存 我的问题是,是否有办法避免仅针对该操作的过滤器 谢谢。既然这个问题的答案被删除了

我正在开发一个MVC5应用程序,它有一个OnResultExecuted过滤器,将响应缓存设置为始终“无缓存无存储”:

但是我有一个动作需要缓存它的结果,所以我在上面设置了OutputCahce atribute

[OutputCache(Duration =300, Location =System.Web.UI.OutputCacheLocation.Client)]
但是,由于过滤器的原因,它永远不会被缓存

我的问题是,是否有办法避免仅针对该操作的过滤器


谢谢。

既然这个问题的答案被删除了。。。我不知道为什么。。。我将发布对我有效的解决方案。我留下答案是因为我想知道有另一种避免默认全局过滤器的方法,而不是像在发布的完全有效的解决方案中那样实现“哑”属性,这很有趣

第一:这个解决方案是有效的,因为OutputCacheAttribute的“AllowMultiple”设置为false,所以可以替换NoCacheActionFilter,只需在全局筛选器中添加OutputCacheAttribute,如

filters.Add(new OutputCacheAttribute { Location = OutputCacheLocation.None, NoStore = true, Duration = 0, VaryByParam = "*" });
然后,如果我在操作级别添加OutputCacheAttribute,它将替换之前配置的全局默认OutputCache筛选器(因为它将AllowMultiple设置为false)

旁注:

OutputCacheAttribute中的“AllowMultiple”属性是一个可以在C#中实现的任何属性中定义的属性,它告诉属性是否可以为单个元素设置多次。更多信息

filters.Add(new OutputCacheAttribute { Location = OutputCacheLocation.None, NoStore = true, Duration = 0, VaryByParam = "*" });
[OutputCache(Duration =300, VaryByParam = "param")]
public FileContentResult WhateverWithCache(string param)
{}