我有一个 WebRole 和 2 个 ServiceBus WorkerRoles 正在运行,在角色的 OnStart 期间我得到以下异常:[System.ArgumentOutOfRangeException] 容器 log4net 参数名称无效的语法:initialConfiguration
Running Azure:
ConfigurationManager version=1.7.0.3
ServiceBus version=1.7.0.1
Storage version=1.7.0.0
在开发 Azure 环境和云中本地运行时会发生这种情况。所有角色都具有以下配置设置:
<LocalStorage name="Log4Net" cleanOnRoleRecycle="true" sizeInMB="2048" />
所有角色在 OnStart 中都有以下代码:
try
{
// Configure Diagnostics to poll Log file to Blob Storage
var diagnosticsConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagnosticsConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
diagnosticsConfig.Directories.DataSources.Add(
new DirectoryConfiguration
{
Path = RoleEnvironment.GetLocalResource("Log4Net").RootPath,
DirectoryQuotaInMB = 512,
Container = "wad-WebRolelog4net"
});
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagnosticsConfig);
}
catch
{
OnStop();
return false;
}
堆栈跟踪:
在 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorConfiguration.Validate(String paramName, Nullable`1 resourceSize) 在 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.StartWithExplicitConfiguration(DiagnosticMonitorStartupInfo startupInfo, DiagnosticMonitorConfiguration initialConfiguration) 在 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start(CloudStorageAccount storageAccount, DiagnosticMonitorConfiguration initialConfiguration) 在 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start(String diagnosticsStorageAccountConfigurationSettingName, DiagnosticMonitorConfiguration initialConfiguration) 在 CICRMIntegrationQueue.WorkerRole.OnStart() 在 c:\Projects\Client\Connection Intelegence\CICloud\CICRMIntegrationQueue\WorkerRole.cs:line 193
当我在所有 3 个角色中都有一个本地存储和轮询时,似乎会发生此错误DiagnosticMonitor
,当只定义一个角色时,不会发生错误。