1

我有一个 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,当只定义一个角色时,不会发生错误。

4

0 回答 0