OutputCache 通过 MVC 3 应用程序中的操作刷新缓存

发布于 2024-12-04 16:39:26 字数 604 浏览 1 评论 0原文

在我们正在构建的 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();
        }

事实是,它似乎不起作用。我会感谢您的任何想法或建议!

In many actions from the MVC application we are building up, we use OutputCache as follows:

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

So, I want to have an action where I can flush manually all these caches:

  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();
        }

The thing, that it seems to not work. I will aprecciate any idea or advice you have!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

汹涌人海 2024-12-11 16:39:27

我们遇到了同样的问题,唯一有效的解决方案是使用:

HttpResponse.RemoveOutputCacheItem(url)

就像 Giedrius 已经提到的那样。

We've had the same problem and the only solution which was working was with:

HttpResponse.RemoveOutputCacheItem(url)

like Giedrius already mentioned.

绮筵 2024-12-11 16:39:27

既然每个人都在寻求一种方法来清除所有的 url,

我可以想到两种方法:

1- 痛苦但简单,维护一组干净的虚拟路径。

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

2-使用反射来获取所有内容,示例如下:
列出 OutputCache 条目

我认为这很困难,因为它不是 ASP.NET 缓存页面,而是 IIS (7+) 内核缓存。

Since everyone is asking for a way to clear the all the url´s...

I can think of two ways:

1- painfull but easy, maintain an array of virtual paths to be clean.

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

2- Uses reflection to get everything, example here:
list OutputCache entry

I think this is dificult because it´s not ASP.NET caching the pages, but IIS (7+) kernel cache.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文