目前我在我的 WCF 应用程序中使用 Azure 缓存,将数据放入缓存时出现此异常:
Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode< ERRCA0017 >:SubStatus< ES0006 >:暂时失败。请稍后重试。(指定的一个或多个缓存服务器不可用,可能是由于网络或服务器繁忙。对于本地缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查 AppFabric所有缓存主机上的缓存服务都允许通过防火墙,服务器端的 MaxBufferSize 必须大于或等于客户端发送的序列化对象大小。)
这是内部异常:
System.ServiceModel.CommunicationException:套接字连接已中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为“00:00:30”。---> System.Net.Sockets.SocketException:现有连接被远程主机在 System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System 强制关闭。 ServiceModel.Channels.SocketConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout) --- 内部异常堆栈跟踪结束 --- 在 System.ServiceModel.Channels.SocketConnection.Write(Byte[ ] 缓冲区、Int32 偏移量、Int32 大小、布尔立即数、TimeSpan 超时)在 System.ServiceModel.Channels。DisplayClass19.b _18() 在 Microsoft.ApplicationServer.Caching.MonitoringListenerFactory.EmptyListener.Microsoft.ApplicationServer.Caching.IMonitoringListener.Listen[TResult](Func`1 innerDelegate) 在 Microsoft.ApplicationServer.Caching.DataCache.Put(String key, Object价值)
问题是这个消息很笼统,没有提供太多细节
我已经尝试将 dataCacheClient 中的 requestTimeout 增加到 2 分钟。这并不能解决问题,所以它不应该因为连接到缓存超时
我知道这也不是因为数据量太大,因为生产服务器上相同数量的数据没有问题(这发生在测试服务器上)。我从本地计算机连接到测试数据库,也没有问题
任何人有任何想法如何解决这个问题?谢谢
下面是我当前对 Azure 缓存的配置
<dataCacheClient name="default" requestTimeout="30000" isCompressionEnabled="true" >
<localCache isEnabled="true" sync="TimeoutBased" objectCount="4194304" ttlValue="80000" />
</dataCacheClient>