Почему мои экземпляры перезагружаются при попытке сохранить сеансы в кеше Azure?
Я запустил приложение ASP.Net MVC3 и следовал этому практическому руководству по Windows Azure о том, как хранить мои сеансы в совмещенном кеше в Windows Azure.
Я установил упомянутый Nuget-пакет и применил необходимую информацию к своему web.config. Веб-роль настроена на запуск 2 небольших экземпляров и использование 30% кешированного хранилища.
При развертывании в Azure мои экземпляры просто перезагружаются. Через подключение к одному из экземпляров удаленного рабочего стола я обнаружил в журналах эти два события, которые кажутся связанными:
Служба CacheStatusIndicator неожиданно прервалась. Это было сделано 1 раз. Следующее корректирующее действие будет предпринято через 1000 миллисекунд: Перезапустите службу.
Служба CacheService неожиданно прервалась. Это было сделано 1 раз. Следующее корректирующее действие будет предпринято через 60000 миллисекунд: Перезапустите службу.
Однако я не могу найти много информации об этом.
Кто-нибудь знает, что мне здесь не хватает?
2 ответа
Теперь я потратил свое общее количество времени, занимаясь этим, и, наконец, похоже, это работает. Не знаю точно, какая часть решила проблему, но я заверну внесенные мной изменения на тот случай, если у кого-нибудь еще возникнет такая же проблема.
- Во время отладки этой проблемы я также обновил свое приложение с MVC3 до MVC4. Не уверен, что это как-то связано с решением этой проблемы, но, по крайней мере, это одно из изменений, которые я сделал.
- Я заметил, что службой IntelliTrace было сгенерировано еще одно исключение, поэтому я отключил его в развертывании и повторно развернул приложение (я полагаю, что именно эта проблема и стала причиной цикличности экземпляров).
Ответ службы поддержки Microsoft по этому вопросу:
Я устранял неполадки в вашем развертывании с помощью проблемы, и я получил дамп памяти из CacheService.exe
Это было исключение
Тип исключения CLR: System.TypeInitializationException "Инициализатор типа для" Microsoft.ApplicationServer.Caching.AzureCommon.AzureUtility "вызвал исключение". ModLoad: 000007fe
ea010000 000007fe
ea0fa000
D: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ diasymreader.dll * ОШИБКА: не удалось найти файл символов. По умолчанию экспортируются символы для D:\windows\system32\KERNEL32.dll - ntdll!ZwWaitForMultipleObjects+0xa: 00000000`76f5739a c3
RET
Исключения в этом пространстве имен могут произойти, если:
- Вы устанавливаете
Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString
настройка в ServiceConfiguration для использования эмулятора локального хранилища - На web.config у вас есть значение идентификатора
<dataCacheClients>
раздел не установлен на правильное имя роли - В некоторых редких случаях, если у вас установлены SDK 1.6 и 1.7 вместе, это может вызвать перепутывание DLL при сборке проекта.
Я очень уверен, что в вашей роли отсутствуют некоторые ссылки, и поэтому вы видите такое сообщение от CacheStatusIndicator. Вы проверили, что в вашей роли установлены все модули / ссылки, настроенные на "копировать локально как истина", поэтому все они являются частью пакета развертывания. В основном это приложение MVC3, вам может потребоваться вручную установить свойство специфических ссылок MVC приложения, чтобы копировать значение local как true для решения этой проблемы.