MVC отключить кеш для действий контроллера в режиме отладки - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть действие контроллера, украшенное атрибутом 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

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вам необходимо использовать 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="*" />
0 голосов
/ 07 февраля 2019

Вы можете сделать:

#if (!DEBUG)
[OutputCache(Duration = 60 * 60 * 12, VaryByParam = "*")]
#endif

# if (C # Reference)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...