如果web.config中的system.web.compilation
設置設置爲debug="true"
,我希望OutputCache
功能被禁用。如何以編程方式禁用ASP.NET MVC中的應用程序的OutputCache
我可以成功地通過調用我的Global.asax的Application_Start()
這種方法來訪問這個值:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
CompilationSection configSection = (CompilationSection)ConfigurationManager.GetSection("system.web/compilation");
if (configSection?.Debug == true)
{
filters.Add(new OutputCacheAttribute()
{
VaryByParam = "*",
Duration = 0,
NoStore = true
});
}
}
的問題是,在我的控制器有任何端點OutputCache
明確設置將不使用全局過濾器,這是建立。
[OutputCache(CacheProfile = "Month")]
[HttpGet]
public ViewResult contact()
{
return View();
}
這裏就是那「月」的個人資料在我的web.config中定義:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Month" duration="2592000" location="Any" varyByParam="*" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
我需要能夠抵消使用的明確定義的OutputCache配置文件,如「月」,當我在調試模式。我怎樣才能做到這一點?
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Month" duration="0" location="Any" varyByParam="*" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
當你的應用程序是內置的調試配置你不會有任何緩存: