Исключение при использовании кэширования Windows Azure: такой хост не известен

Я пытаюсь начать работу с Azure и пытаюсь использовать функцию кэширования. Я создал проект облачной службы и добавил рабочую роль Cache и веб-роль. Я установил nuget "Кэширование Windows Azure" в проекты для обеих ролей и добавил имя рабочей роли кэша в качестве идентификатора в элементе DataCacheClients в web.config веб-роли.

Я добавил следующий код в веб-роль:

DataCacheFactory cf = new DataCacheFactory();
DataCache c = cf.GetDefaultCache();

Когда я пытаюсь запустить это локально на эмуляторе, я получаю следующее исключение:

    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.). 
Additional Information : The client was trying to communicate  with the server: net.tcp://MvcWebRole1:24233.


Inner Exception : No such host is known

Подскажите, пожалуйста, что мне здесь не хватает?

Azure SDK используется: v2.0

3 ответа

Решение

Сроки вашего вопроса не может быть лучше. Мы также столкнулись с точно такой же проблемой и расхаживали головой о том, что это может быть за проблема. У нас был один проект, в котором все работало идеально, а в одном мы получали ту же ошибку. Основываясь на наших исследованиях, мы определили проблему с пакетом Nuget для кэширования. Кажется, вчера была выпущена новая версия (2.1.0.0), и мы обнаружили, что если мы установим этот пакет, мы получим эту ошибку. Можете ли вы проверить версию пакета в вашем случае? В документации говорится, что эту новую версию можно использовать только с последним SDK (2.1), выпущенным сегодня.

Одним из решений будет удаление версии 2.1.0.0 и установка версии 2.0.0.0. Для установки версии 2.0.0.0 откройте Консоль диспетчера пакетов (View --> Other Windows --> Package Manager Console) и введите следующую команду:

Install-Package Microsoft.WindowsAzure.Caching -Version 2.0.0.0

Это решило нашу проблему. Надеюсь, это должно исправить и ваше.

Вот ссылка на блог Windows Azure Cloud Integration Engineering о том, как решить эту проблему. Они рекомендуют перейти на Azure SDK v 2.1 или откатиться в соответствии с принятым ответом.

http://blogs.msdn.com/b/cie/archive/2013/08/08/windows-azure-caching-2-1-0-0-no-such-host-is-known.aspx

Это исключение может также возникнуть в эмуляторе вычислений, если для роли в конфигурации клиентской библиотеки не настроен кэш. В моем случае это произошло специально, поскольку у эмулятора кэша есть некоторые проблемы, которые могут замедлить тестирование и отладку в сервисе.

В предыдущей версии Windows Azure Caching в этом сценарии построение DataCacheFactory потерпит неудачу с исключением (обработано моим кодом); в Windows Azure Caching 2.1 (и Azure SDK 2.1) в этом же сценарии код будет рассматривать имя роли как адрес сервера и, следовательно, DataCache Конструкция будет пытаться связаться с несуществующим кешем - это приведет к 3-минутному ожиданию и исключению, указанному в вопросе.

Я изменил свой код, чтобы обнаружить новую ситуацию для этого сценария - вы можете найти более подробную информацию в этом вопросе SO.

Другие вопросы по тегам