/ / OutputCache Flush Cache через дію в додатку MVC 3 - asp.net-mvc, asp.net-mvc-3, c # -4.0, action, outputcache

OutputCache Flush Cache через дію у програмі MVC 3 - asp.net-mvc, asp.net-mvc-3, c # -4.0, action, outputcache

У багатьох діях програми 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();
}

Справа в тому, що це, здається, не працює. Я підтримую будь-яку вашу ідею чи пораду!

Відповіді:

1 для відповіді № 1

Ви повинні подивитися тут: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.removeoutputcacheitem.aspx


2 для відповіді № 2

У нас була та ж проблема, і єдиним рішенням, яке працювало, було:

HttpResponse.RemoveOutputCacheItem(url)

як уже згадуваний Гедрій.


0 для відповіді № 3

Оскільки всі просять спосіб очистити всі URL-адреси ...

Я можу думати два способи:

1 - болісно, ​​але легко, підтримуйте безліч віртуальних шляхів, щоб бути чистими.

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

2- Використовує відображення, щоб отримати все, приклад тут: список записів OutputCache

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