Azure Caching - ошибка после обновления до SDK 2.1 и кэширования 2.1
Похоже, что по этой теме уже открыто несколько вопросов, но я считаю, что мои могут быть другими. Моя настройка:
- 1 Azure Cache Worker Role
- 1 веб-роль
Примерно неделю назад они существовали в гармонии, пока я не попытался перейти на Azure caching 2.1. Как только я это сделал, я столкнулся с проблемой "Нет такого хоста неизвестен", которая, похоже, затронула многих разработчиков. Я нашел много вопросов и сайтов, на которых мне было предложено обновить установку Azure SDK до новой версии 2.1. Я сделал все эти вещи:
- Установите новейший Azure SDK 2.1
- Удалить Azure SDK 2.0
- Удалите и переустановите Azure Caching 2.1
- Тройная проверка конфигурации всех моих настроек кеширования
- Тройная проверка, что все ссылки указывают на самые новые версии, а не на старые
- Обновите мой проект Azure до версии 2.1, щелкнув правой кнопкой мыши, перейдите в "Свойства" и нажмите "Обновить".
и я все еще получаю следующее (Моя ошибка):
Exception type: SocketException
Exception message: No such host is known
at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult)
Это отличается от более типичной ошибки, которую показывает большинство других вопросов и сайтов, а именно (чаще сообщается об ошибке, а не у меня):
No such host is known
Exception message: No such host is known
at Microsoft.ApplicationServer.Caching.AsyncResultNoResult.EndInvoke()
У меня около 30 часов на устранение неполадок, и я мог бы действительно помочь. Может быть, я просто пропускаю какой-то шаг по поводу обновления SDK? Каким-то образом, может быть, он все еще использует старую версию DLL? Есть ли какой-то надежный способ проверить это, кроме просмотра пути каждой ссылки в проекте (что я уже сделал, и все они совпадают)?
2 ответа
Не совсем ответ, но некоторые комментарии, которые могут помочь вам диагностировать проблему:
- Visual Studio 2012 / обновление 3 - убедитесь, что у вас установлены последние обновления для VS. У нас были похожие проблемы, и это было одной из тех вещей, которые нам помогли.
Сбор большого количества данных диагностики кеша - в разделе конфигурации кеша измените
Microsoft.WindowsAzure.Plugins.Caching.DiagnosticLevel
значение для4
в разделе конфигурации вашей роли кеша. После этого добавьте следующие строки кода в метод OnStart() вашей рабочей роли кэша:DiagnosticMonitorConfiguration dmConfig = DiagnosticMonitor.GetDefaultInitialConfiguration(); // Configure the collection of cache diagnostic data. CacheDiagnostics.ConfigureDiagnostics(dmConfig); DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", dmConfig); return base.OnStart();
Надеюсь, это даст вам представление о том, что именно происходит.
Это также не является прямым ответом на вашу проблему, но я думаю, что это может помочь решить вашу ситуацию.
У меня есть это исключение, когда я запускаю свою размещенную службу в эмуляторе вычислений, и кэш был отключен специально - в предыдущей версии Windows Azure Caching исключение возникало DataCacheFactory
конструкция, и я бы справился с этим правильно, в то время как с версией 2.1 (и Azure SDK 2.1) DataCacheFactory
построен без ошибок, но потом я застрял на DataCache
строительство за 3 минуты до исключения, которое вы упомянули.
Я использовал процедуру, описанную Гауравом Мантри в его ответе, и мне удалось обнаружить, что в предыдущих версиях Windows Azure Caching DataCacheFactory
выдает исключение, если роль кэша не найдена в csdef
в то время как в 2.1 он рассматривал бы имя роли кэша как адрес в сети - таким образом вызывая 3-минутное ожидание и последующее исключение.
Таким образом, я адаптировал свой код для обнаружения этого нового поведения - более подробно см. Этот вопрос