Приведенный ниже код создает аварийный дамп при запуске его в среде разработки Azure, но не при его развертывании в облаке. У меня есть:
- Выполнено Инструкции Microsoft (см. Ниже)
- Протестировал учетные данные в Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString, загрузив большой двоичный объект.
- Ожидал его сбоя (примерно десять раз).
- Остановил развертывание и подождал полчаса.
Но я все еще не могу найти что-либо в учетной записи хранения. Я нацеливаюсь на .Net 4 с использованием VS 2010 Pro SP1 и развертывание с использованием его встроенных компонентов. Что я делаю не так?
public override void Run()
{
throw new ApplicationException("bugger");
}
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
string conn_str = RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
CloudStorageAccount account = CloudStorageAccount.Parse(conn_str);
DiagnosticMonitor diagnosticMonitor = DiagnosticMonitor.Start(account, config);
CrashDumps.EnableCollection(true);
return base.OnStart();
}
Вот моя конфигурация:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzureProject1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WorkerRole name="WorkerRole1">
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
</WorkerRole>
</ServiceDefinition>
и
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="WindowsAzureProject1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
<Role name="WorkerRole1">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="AccountName=XXX;AccountKey=XXX;DefaultEndpointsProtocol=https" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
(Мой реальный проект создает аварийные дампы, но у меня возникают проблемы с их анализом, поэтому я пытаюсь создать урезанный пример. Когда это сработает, я посмотрю, есть ли у него аварийные дампы лучше.)
РЕДАКТИРОВАТЬ: Часть решения заключается в добавлении
config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
, который создает контейнер BLOB-объектов wad-crash-dumps, но, к сожалению, он остается пустым. Также см. мой вопрос о том, что происходит с диагностическими данными при сбое роли .