在两个IIS应用程序之间共享HttpRuntime.Cache

时间:2009-08-07 10:49:11

标签: iis httpruntime.cache

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

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

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

2 个答案:

答案 0 :(得分:3)

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

可能很简单,但是你发布的简单页面可能导致缓存检查更新?或者 - 让应用程序根据时间戳立即检查更新。

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

答案 1 :(得分:0)

没有;根据经验,这将无法工作(.NET 4.6,IIS 8.5,2应用程序使用相同的应用程序池的常见DLL)。文档很难得到(超出"cache items are stored in memory") - 实际上唯一的描述部分是what @Thies stated above - 但正如他所说的我相信这是因为缓存存储在DLL的已分配内存中,因此(因为我们仍然有one process but two app domains),所以公共DLL被单独加载到两个应用程序域中,而DLL的内存不会被共享。