OutputCache Flush Cache с помощью действия в приложении MVC 3 - PullRequest
0 голосов
/ 16 сентября 2011

Во многих действиях из приложения MVC, которое мы создаем, мы используем OutputCache следующим образом:

[OutputCache(Duration = 3600, VaryByCustom = "language")]
public ActionResult SomeAction()
{
   //Action..
}

Итак, я хочу выполнить действие, в котором я могу вручную сбросить все эти кэши:

  public ActionResult RefrescarCache()
        {
            var keys = HttpContext.Cache.Cast<DictionaryEntry>().ToList();

            keys.ForEach(k => HttpContext.Cache.Remove(k.Key.ToString()));
            ViewBag.operationResult= "The cache was flushed succesfully!";

            return View();
        }

Дело в том, что вроде бы не работает.Я буду признателен за любую вашу идею или совет!

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

У нас была та же проблема, и единственное решение, которое работало, было с:

HttpResponse.RemoveOutputCacheItem(url)

как уже упоминал Гедриус.

1 голос
/ 16 сентября 2011
0 голосов
/ 25 апреля 2014

Так как все просят, чтобы очистить все URL-адреса ...

Я могу придумать два пути:

1 - больно, но легко, поддерживайте массив виртуальных путей в чистоте.

foreach(string path in myArray){HttpResponse.RemoveOutputCacheItem(path); }

2 - использует отражение, чтобы получить все, пример здесь: список записей OutputCache

Я думаю, что это сложно, потому что это не ASP.NET кеширование страниц, а кеш ядра IIS (7+).

...