0

全部,

我开发了一个 WCF ODATA 服务应用程序并将其托管在 IIS7 中。服务应用程序有一个内存缓存,如果客户端空闲大约 15 分钟左右,它会丢失所有缓存值。

在进行故障排除时,我发现应用程序逻辑是正确的,并且不会从缓存中批量删除对象。

所以,如果 IIS 在很长一段时间内没有连接到它的客户端时是否会清除服务对象,我会感到困惑。?

这种 GC 行为是真的吗?如果是这样,我该如何控制它?

任何帮助深表感谢。

谢谢

4

1 回答 1

0

默认情况下,IIS7 应用程序池设置了 20 分钟的空闲超时值,之后应用程序池与所有缓存数据一起从内存中卸载。

您可以通过在 IIS 管理器中选择托管您的站点的应用程序池,在“操作”窗格中选择“高级属性”,然后设置“空闲时间”的值来增加空闲超时甚至将其设置为“0”,从而使其永不超时-out(分钟)值'到您想要的新超时,然后单击确定。(在 Brad Kinsley 的博客“IIS7 应用程序池空闲超时设置”中有几个屏幕截图

要考虑的一种选择是设置进程外缓存,这样即使 IIS 确实回收了您的应用程序,内存缓存也会保留或为现有缓存设置后备存储,以便在应用程序池回收时缓存重新填充后备商店。

Enterprise Library 的缓存应用程序块是具有这种后备存储的缓存解决方案的一个示例。有关更多信息,请参阅“缓存应用程序块和数据库后备存储”

于 2013-02-28T07:06:40.510 回答