是否可以在高于每个控制器的级别禁用MVC OutputCache?

时间:2014-01-23 19:04:35

标签: c# asp.net-mvc

我正在装饰我的控制器:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class ComponentController : Controller

这非常适合禁用控制器公开的所有方法的所有缓存。

我想在应用程序级别应用相同的逻辑,而不是基于每个控制器。这可能吗?

2 个答案:

答案 0 :(得分:3)

将其添加为global.asax文件中的全局过滤器。

protected void Application_Start()
{
    GlobalFilters.Filters.Add(new OutputCacheAttribute { NoStore = true, Duration = 0, VaryByParam = "*" });
}      

答案 1 :(得分:1)

您可以将其添加为全局过滤器。

在App_Start文件夹中,通常有一个带有RegisterGlobalFilters方法的FilterConfig.cs类:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        // add your filters here           
    }
}

这通常作为Global.asax中的Application_Start的一部分调用:

protected void Application_Start()
{            
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
}