0

在断断续续地搜索了几个月后,我终于决定把这个贴出来。

我们有一个使用企业库缓存项目的 ASP.NET MVC 应用程序。我们还使用 Windows 服务,该服务经常更新这些缓存项目。问题是当windows服务更新缓存项时,mvc网站是看不到更新的缓存项,直到我们重置IIS。我们曾考虑在服务中添加一些代码来重新启动 IIS 服务,但认为必须有更好的方法。似乎还有一篇关于从外部应用程序中删除项目的帖子,但还远远不够。

我们认为这与缓存管理器的每个实例的本地内存版本有关,但根本找不到将它们组合在一起的方法。

4

1 回答 1

0

嗯,差不多就是这样。企业库使用的缓存在内存中,ASP.NET 和 Windows 服务应用程序都有不同的内存空间。当您更新一个缓存时,您不会更新另一个缓存。

该问题也存在于 ASP.NET 应用程序中,但似乎这是一个只读缓存,并且您正在从服务执行写入。

您需要做的是创建两个应用程序域可以共享的缓存,并且有很多方法可以做到这一点:

  • 将项目存储在两个应用程序域都可以轻松访问的共享持久性存储(文件系统、数据库等)中
  • 有一个缓存服务将处理缓存项的更新,但您将查询(例如通过 WCF)缓存项

通常,您希望执行“分布式缓存”。为此,您应该阅读 MSDN 杂志中标题为“分布式缓存在可扩展性路径上”的文章,以获取有关 .NET 中分布式缓存选项的更多信息

于 2010-11-30T18:58:41.333 回答