有一件非常奇怪的事情发生了
我有一个部署在Azure WebRole中的MVC 3中的网站
它运行良好,最初是在VS2010中制作的
现在我使用VS2012
我决定进行一些细微的改动,它似乎正在起作用,但是随机间隔不断分解
这就是发生的事。
在随机间隔后我得到此错误ErrorCode<ERRCA0017>:SubStatus<ES0006>
在获得此错误2-3分钟后,网站似乎正常工作
我没有改变与缓存相关的网站的先前版本
当我在staging
或local environment
中测试时,会发生此错误
没有我的代码在哪里以编程方式访问此缓存
我从天蓝色的门户网站上复制粘贴了整个配置,我知道它是正确的,因为这些配置设置与之前的工作相同
我只是使用Azure AppFabric Caching
,因为我需要将sessions
保存在某处。因此,有史以来唯一提到的地方是我的网站web config
,正如我所说,所有配置都可以认为是正确的。
这是堆栈跟踪,如果这可以提供一些帮助
[DataCacheException: ErrorCode<ERRCA0017>:SubStatus<ES0006>:There is a temporary failure. Please retry later. (One or more specified cache servers are unavailable, which could be caused by busy network or servers. For on-premises cache clusters, also verify the following conditions. Ensure that security permission has been granted for this client account, and check that the AppFabric Caching Service is allowed through the firewall on all cache hosts. Also the MaxBufferSize on the server must be greater than or equal to the serialized object size sent from the client.)]
Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody) +616
Microsoft.ApplicationServer.Caching.DataCache.ExecuteAPI(RequestBody reqMsg, IMonitoringListener listener) +29
Microsoft.ApplicationServer.Caching.DataCache.InternalGetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle, String region, Boolean lockKey, IMonitoringListener listener) +227
Microsoft.ApplicationServer.Caching.<>c__DisplayClass78.<GetAndLock>b__77() +103
Microsoft.ApplicationServer.Caching.DataCache.GetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle) +258
Microsoft.Web.DistributedCache.<>c__DisplayClass31`1.<PerformCacheOperation>b__30() +19
Microsoft.Web.DistributedCache.DataCacheRetryWrapper.PerformCacheOperation(Action action) +208
Microsoft.Web.DistributedCache.DataCacheForwarderBase.GetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle) +190
Microsoft.Web.DistributedCache.BlobBasedSessionStoreProvider.GetItem(HttpContextBase context, String id, Boolean acquireWriteLock, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) +593
Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) +125
System.Web.SessionState.SessionStateModule.GetSessionStateItem() +178
System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +1076
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +115
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375
更新: -
突然间我发现了一个新的错误,在我看来这是许多网站谈论的内部错误之一
错误说明
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [IP-Address]:[PORT]
这是新的堆栈跟踪
[SocketException (0x274c): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [IP-ADDRESS]:[PORT]]
System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +305
System.Net.Sockets.Socket.Connect(EndPoint remoteEP) +162
System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout) +774
[EndpointNotFoundException: Could not connect to [SOCKET-ENDPOINT]. The connection attempt lasted for a time span of 00:00:21.0308462. TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 111.221.89.111:22233. ]
System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase) +518
System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData) +401
Microsoft.ApplicationServer.Caching.OpenDelegate.EndInvoke(IAsyncResult result) +0
Microsoft.ApplicationServer.Caching.ChannelContainer.Opened(IAsyncResult ar) +122
答案 0 :(得分:0)
一年前有一篇关于此错误的有趣博客文章:Azure AppFabric Caching - ErrorCode:SubStatus : What to do?。
在初始化DataCacheFactory之前修改 DataCacheFactoryConfiguration.ChannelOpenTimeout的 您正在使用较大的dataCacheFactoryConfiguration实例 价值2分钟。 (不能使用配置来设置值,因为 在允许的限制内20秒)。此外,这个建议只是 用于调试目的,理想情况下不应该在生产中使用 环境。这使底层可以响应实际错误 发生了。现在,如果你检查内部异常,你应该看到 导致请求失败的原因。
请按照以下步骤查找内部异常,以解释请求失败的原因。
注意:如果这是由瞬态故障引起的,您应该考虑使用Transient Fault Handling Application Block(也支持AppFabric Cache)来实施重试策略。