我正在使用Azure专用缓存来存储我的会话状态,并且我最近遇到连接失败,然后关闭我的应用程序。解决它的唯一方法是重新启动应用程序。
有没有人知道如何捕获这种类型的异常,然后动态刷新缓存连接?
我正在使用azure缓存库2.3和我按照本文在缓存中设置sessionstate。 http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-service/#store-session
这是我得到的例外。
“ClassName”:“Microsoft.ApplicationServer.Caching.DataCacheException”, “消息”:“存在暂时性故障。请稍后重试。(一个或多个指定的缓存服务器不可用,这可能是由繁忙的网络或服务器引起的。对于内部部署缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查是否允许AppFabric缓存服务通过所有缓存主机上的防火墙。服务器上的MaxBufferSize也必须大于或等于从客户端发送的序列化对象大小。) ” “数据”:{ “客户端正在尝试与服务器通信:net.tcp://xxxxx.cache.windows.net:23233。”:null },
谢谢!
答案 0 :(得分:0)
我被引导到这篇文章,其中提供了有关如何刷新Azure DataCacheFactory的一些细节。
http://blogs.msdn.com/b/cie/archive/2014/04/29/cache-retry-fails-what-next.aspx
我只使用内置的SessionProvider,所以我觉得这有点多了,我无法理解正在发生的一切。因此,我会捕获异常,然后重新启动角色,以便在应用启动时建立新连接。
以下是该帖子问题的根本原因..
一般情况下,原因可能是高可用性的基础 缓存服务负载平衡分区和辅助节点 正在转换到主要,客户端仍在发送请求 旧的主节点OR由于某种原因缓存服务被移动到 不同的VM作为服务修复过程的一部分,但仍然缓存客户端 拥有缓存服务VM的旧IP地址。
尽管在极端情况下实施重试政策是好事 在重试没有帮助的地方你可以使用以下方法 应用程序通过刷新缓存客户端来缓解错误 抛出异常。