【发布时间】:2015-03-10 08:54:00
【问题描述】:
我在 Windows Server 2012 的 IIS 8.5 上部署了 Web ASP.NET 应用程序。 我们的网站是为了在 RAM 中存储一些数据而开发的。问题是 IIS 每 30 分钟或有时 15 分钟等回收 Web 应用程序的池。一旦清除 RAM 中的所有数据,就会导致应用程序无法正常工作。 我已取消选中 IIS 中池的回收条件中的所有选项,但没有解决任何问题。 希望有人能帮忙。
感谢和问候,
【问题讨论】:
-
尝试在配置中启用 logEventOnRecycle 属性,以更好地了解为什么您的应用每 30 分钟回收一次。 iis.net/configreference/system.applicationhost/applicationpools/…
-
您可以永远完全阻止回收利用。您的应用必须在存在回收利用的情况下正常工作。想想重启、崩溃、部署……
-
“一旦清除 RAM 中的所有数据,应用程序就无法正常工作”——然后应用程序就坏了。正如@usr 所说,你不能完全避免回收,所以如果应用程序是基于这个假设构建的,那就是一个错误。
-
您存储在 RAM 中的数据的性质是什么?在大多数情况下,将数据存储在其他地方,例如数据库或缓存,将使您的应用程序在回收时不会出现问题。如果数据与用户的会话相关,将其存储在 Web 应用程序外部也将有助于您扩展应用程序 - 例如使用负载平衡。
-
我重复 Alan 的问题:您存储在 RAM 中的数据的性质是什么?取决于此,Preserving ASP.NET Application State Across Restarts 可能是您所需要的。