我正在以 Web 角色在 Azure 中开发 WCF 服务。我在内存中建立了一个索引,并用它来服务 wcf 请求。我的问题是,在 iis 回收后,这个索引从内存中消失了。有什么办法可以检测到回收事件,并再次将索引复制到内存中?
谢谢你的帮助。
我正在以 Web 角色在 Azure 中开发 WCF 服务。我在内存中建立了一个索引,并用它来服务 wcf 请求。我的问题是,在 iis 回收后,这个索引从内存中消失了。有什么办法可以检测到回收事件,并再次将索引复制到内存中?
谢谢你的帮助。
是的,您可以在Application_End事件中检测到它(在您的 Global.asax.cs 中)。
更好的解决方案是不要将索引放在内存中。由于您使用的是 Web 角色,因此您可以使用 Windows Azure 缓存(您无需为此支付额外费用)。通过使用 Windows Azure 缓存,您可以将索引存储在内存中,但不能存储在应用程序池的进程中。它仍然非常快,并且可以在应用程序池回收中存活下来。
另一个优点是,当您将索引存储在 Windows Azure 缓存中时,同一部署中的所有实例和角色将能够使用相同的缓存。这意味着它们都将使用您存储在其中的相同索引。