4

我在 IIS 中有两个 ASP.NET 2.0 应用程序;公共预订系统和管理价格的管理系统。有一个访问数据库的共享 DLL 项目,供两个应用程序使用。

为了提高性能,价格被缓存在 DLL 代码中,以节省每次请求时访问数据库的时间。但是,当管理员更改价格时,缓存会在管理应用程序上刷新(显然它不会在公共应用程序上刷新)

所以,对于这个问题。是否可以配置 IIS 使这两个应用程序共享 HttpRuntime.Cache?如果是这样,它应该如何设置?

4

2 回答 2

3

这将超越拥有两个应用程序的意义——它们不应该共享同一个 DLL 内存堆,这是需要的。您需要的是两者之间的通信通道,并让管理网页通知缓存的更改 - 这将导致刷新。

可能是一些简单的事情,但也许您发布的一个简单页面会导致缓存检查更新?或者 - 让应用程序根据时间戳不时检查更新。

(另一种选择是创建缓存所在的服务,但我认为这超出了简单解决方案的范围)

于 2009-08-07T10:53:21.407 回答
0

不; 根据经验,这是行不通的(.NET 4.6、IIS 8.5、2 个应用程序一个使用相同应用程序池的通用 DLL)。很难找到文档(除了“缓存项存储在内存中”)——事实上,唯一的描述性部分是上面@Thies 所说的——但正如他所说,我相信这是因为缓存存储在 DLL 分配的内存中,因此(因为我们仍然有一个进程但有两个应用程序域)公共 DLL 被分别加载到两个应用程序域中,并且 DLL 的内存不共享。

于 2016-01-13T19:14:41.393 回答