我的控制器动作装饰有OutputCache属性:
[OutputCache(Duration = 60 * 60 * 12, VaryByParam = "*")]
public ActionResult GetProducts(int id, string template, string version)
我想在调试模式下禁用它,所以我使用了web.config转换,因此在调试模式下,我得到了以下额外的信息:
<caching>
<outputCache enableOutputCache="false" enableFragmentCache="false" />
</caching>
但是缓存仍然有效-缓存了操作结果,更改视图内的代码在呈现时不起作用。
有什么想法吗?
IT Man
答案 0 :(得分:1)
您需要使用CacheProfile
:
[OutputCache(CacheProfile = "CacheProfile1")]
public ActionResult GetProducts(int id, string template, string version)
web.config:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheProfile1" duration="0" varyByParam="*" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
在web.Release.config上进行的转换:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheProfile1" duration="43200" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
将其发布为发布模式时,它将为web.config生成该文件:
<add name="CacheProfile1" duration="43200" varyByParam="*" />
答案 1 :(得分:0)
您可以这样做:
#if (!DEBUG)
[OutputCache(Duration = 60 * 60 * 12, VaryByParam = "*")]
#endif