Ответ 1
См. http://blogs.msdn.com/b/kwill/archive/2013/08/09/windows-azure-paas-compute-diagnostics-data.aspx. Это проведет все доступные диагностические данные, а также поможет устранить наиболее распространенные проблемы.
Я пытаюсь развернуть облачную службу с 1 веб-ролью в Azure.
Когда я это сделаю, я получаю это сообщение:
Your role instances have recycled a number of times during an update or upgrade operation. This indicates that the new version of your service or the configuration settings you provided when configuring the service prevent the role instances from running. Verify your code does not throw unhandled exceptions and that your configuration settings are correct and then start another update or upgrade operation.
Проект работает нормально, и мне сложно определить, как начать отладку этой проблемы. Существуют ли общие проблемы, вызывающие это сообщение или шаги, чтобы выяснить, что вызывает его?
См. http://blogs.msdn.com/b/kwill/archive/2013/08/09/windows-azure-paas-compute-diagnostics-data.aspx. Это проведет все доступные диагностические данные, а также поможет устранить наиболее распространенные проблемы.
У нас была аналогичная проблема, и это было связано с тем, что некоторые DDL не смогли загрузить. (из-за разной версии от одной MS развернуты на ВМ)
Попробуйте установить CopyLocal в значение "true" для всех ссылок в проекте и повторно разверните.
У нас также была эта неприятная проблема, и в нашем случае:
Проблема № 1 может быть легко обнаружена, если вы сначала запустите проект на своей локальной машине. Исключение будет выбрано.
Проблема № 2, однако, сложнее, главным образом потому, что она работает нормально на локальной машине. После 5-дневного устранения проблем мы, наконец, нашли проблему. Итак, проверьте все ссылки и попробуйте добавить проекты суб-ссылок, те, на которые ссылаются другие ссылки.
Я либо удалил бы рабочий стол для экземпляра облака, либо просмотрел журналы событий Windows для исключений или переустановил с помощью IntelliTrace Enabled. Если вы выберете позже, вы можете загрузить журналы IntelliTrace из Visual Studio и отладить
http://msdn.microsoft.com/en-us/library/windowsazure/ff683671.aspx
Один из способов узнать фактическую ошибку - щелкнуть по "1 экземпляру" в верхней части панели мониторинга после попытки развернуть свою веб-роль. Он покажет вам статус экземпляра роли. Статус должен содержать больше информации о типе ошибки, которая блокирует развертывание.
Это зависит от вашего дела. Для меня статус утверждал, что у меня было необработанное исключение безопасности. После некоторого расследования выяснилось, что под моей ролью OnStart() я попытался создать источник события. Однако служба Azure не имеет права создавать источник событий.
Для получения более точных сведений проверьте http://blogs.msdn.com/b/kwill/archive/2013/09/06/troubleshooting-scenario-3-role-stuck-in-busy.aspx
Для меня проблема заключалась в моих правилах брандмауэра SQL Azure DB. На моих серверах базы данных Azure SQL не установлено значение "Разрешить доступ к службам Azure", поэтому я должен явно указать IP-адреса, которые разрешены.
Я обнаружил это после упаковки моего кода в try/catch, который проглотил все исключения, рефакторинг моих методов OnStart() и RunAsync() и установку всех моих ссылок на Copy Local = True. Ничего из этого не получилось, тогда я увидел, что у меня есть эта строка в методе RunAsync():
log4net.Config.XmlConfigurator.Configure();
Я использую AdoNetAdapter для log4net и подключаюсь к Azure SQL DB для ведения журнала, поэтому это привело меня к проверке правил брандмауэра.
Для меня у меня была какая-то другая версия пакетов nuget в моих различных проектах. Как только я объединил все в одну и ту же версию (ы), она отлично работала.
С выпуском Windows Azure SDK версии 2.2 для Visual Studio 2012 и 2013 теперь можно Удаленные облачные ресурсы отладки в Visual Studio.
Как только ваша облачная служба будет опубликована и запущена в реальном времени в облаке, вы можете просто установить контрольную точку в своем локальном исходном коде. Это может помочь вам разобраться, что происходит не так!