Внутреннее кэширование Windows Azure не работает после обновления SDK 2.5
Я обновил свой проект веб-роли Azure с SDK v1.8 до SDK v2.5, и кэширование в роли, похоже, больше не работает. Я вижу следующую ошибку
ErrorCode ERRCA0017:SubStatus ES0006: временный сбой. Пожалуйста, попробуйте позже. (Один или несколько указанных серверов кэша недоступны, что может быть вызвано занятой сетью или серверами. Для локальных кластеров кэша также проверьте следующие условия. Убедитесь, что для этой учетной записи клиента предоставлено разрешение безопасности, и убедитесь, что AppFabric Служба кэширования разрешена через брандмауэр на всех узлах кэша. Также значение MaxBufferSize на сервере должно быть больше или равно размеру сериализованного объекта, отправленного клиентом.). Дополнительная информация: клиент пытался связаться с сервером: net.tcp://10.175.252.32:20004/. ---> System.Net.Sockets.SocketException: не удалось установить соединение, поскольку целевая машина активно отказывала в этом. 10.175.252.32:20004 в Microsoft.ApplicationServer.Caching.AsyncResultNoResult.EndInvoke() в Microsoft.ApplicationServer.Caching.TcpClientChannelFactory.TcpConnectionCallback(результат IAsyncResult) --- Конец трассировки стека внутренних исключений --- в Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ErrStatus errStatus, Guid trackingId, Исключительная ситуация responseException, Байтная нагрузка [][], назначение EndpointID) в Microsoft. ApplicationServer.Caching.) в Microsoft.ApplicationServer.Caching.SocketClientProtocol.Put (ключ строки, значение объекта, DataCacheItem Версия oldVersion, TimeSpan timeout, теги DataCacheTag[], строковая область, прослушиватель IMonitoringListener) в Microsoft.ApplicationServer.Caching.DataCache.InternalPut (строковый ключ, значение объекта, DataCacheItemVersion oldVersion, TimeSpan тайм-аут, теги DataCacheTag[], прослушиватель области, строковая область) в Microsoft.ApplicationServer.Caching.DataCache.<>c__DisplayClass23.b__22() в Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.ExecuteAction[TResult](Func`1 func)
Вот настройка app.Config
<dataCacheClients>
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="WorkerRole" />
</dataCacheClient>
</dataCacheClients>
Вот пакеты по моему проекту
<package id="WindowsAzure.ServiceBus" version="2.5.3.0" targetFramework="net45" />
<package id="WindowsAzure.Storage" version="4.2.1" targetFramework="net45" />
<package id="Microsoft.WindowsAzure.Caching" version="2.5.0.0" targetFramework="net45" />
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
<package id="EnterpriseLibrary.TransientFaultHandling.Caching" version="6.0.1304.0" targetFramework="net45" />
Даже на эмуляторе я вижу ту же ошибку (без дополнительной информации). WinDebug не будет работать с ролью Azure (он открывается с ошибочным состоянием).
Любая помощь будет оценена
1 ответ
Этот вопрос старый (но все еще актуален), но я наткнулся на него и просто хотел бы добавить ответ на тот случай, если кто-то еще получит это...
Проблема заключается в том, что кэш Windows Azure тесно связан с SDK. Поэтому, если вы используете это и обновляете SDK, вы также должны обновить кэш Windows Azure до последней версии.
Пакет NuGet - это "Microsoft.WindowsAzure.Caching".
Я всегда рекомендовал бы заново создавать образы вашей виртуальной машины после обновления SDK, чтобы убедиться, что все работает нормально. У меня была проблема, когда я обновил существующую виртуальную машину, и поэтому у меня было 2 версии SDK. Когда виртуальная машина была обновлена для Центра обновления Windows, была доступна только 1 версия SDK и произошел сбой кэша.