Я работаю над размещенной службой, в которой кэш Windows Azure развернут на экземплярах веб-роли. Кэш включен в рабочей среде, но в эмуляторе вычислений мы отключаем его, так как часто сталкиваемся с замедлениями и исключениями при работе с эмулятором кеша. В частности, в эмуляторе вычислений мы не загружаем модуль кэширования в csdef
, а во время выполнения определяем, включен ли кеш, создавая DataCacheFactory
и перехватывая конкретное исключение, возникающее, когда роль, указанная в конфигурации клиентской библиотеки, не найдена в csdef
.
Это работало правильно до Windows Azure Caching 2.0 — когда мы обновились до Windows Azure Caching 2.1 (и Azure SDK 2.1), поведение изменилось:
- у нас нет исключения в конструкторе
DataCacheFactory
; когда мы пытаемся создать экземпляр
DataCache
изDataCacheFactory
, роль кажется зависшей и через 3 минуты возвращается со следующим исключением (полный текст можно найти здесь):Microsoft.ApplicationServer.Caching.DataCacheException was unhandled by user code Message=ErrorCode<ERRCA0017>:SubStatus<ES0006>:There is a temporary failure. Please retry later. (<snip>). Additional Information : The client was trying to communicate with the server: net.tcp://WebRole:24233. InnerException: System.Net.Sockets.SocketException Message=No such host is known
Обратите внимание, что это не дубликат следующих вопросов SO:
- Не удается получить кэш Azure работать. «Есть временный сбой. Повторите попытку позже».
- Исключение при использовании кэширования Windows Azure: нет такого хоста известно
- Кэширование Azure — сбой после обновления в SDK 2.1 и кэширование 2.1
поскольку
- Я уверен, что использую Azure SDK 2.1 (я проверил при отладке правильность версий библиотеки);
- моя проблема возникает только тогда, когда я специально отключаю роль кеша.