protected override void ApplySettingsChanges(KeyValueConfigurationCollection settings) { if (!ForwardErrorMessages) { ErrorLogQueue = null; } if (!ForwardAuditMessages) { AuditLogQueue = null; } settings.Set(AuditInstanceSettingsList.HostName, HostName); settings.Set(AuditInstanceSettingsList.Port, Port.ToString()); settings.Set(AuditInstanceSettingsList.DatabaseMaintenancePort, DatabaseMaintenancePort.ToString(), Version); settings.Set(AuditInstanceSettingsList.LogPath, LogPath); settings.Set(AuditInstanceSettingsList.ForwardAuditMessages, ForwardAuditMessages.ToString()); settings.Set(AuditInstanceSettingsList.AuditRetentionPeriod, AuditRetentionPeriod.ToString(), Version); settings.Set(AuditInstanceSettingsList.AuditQueue, AuditQueue); }
protected override void ApplySettingsChanges(KeyValueConfigurationCollection settings) { if (!ForwardErrorMessages) { ErrorLogQueue = null; } if (!ForwardAuditMessages) { AuditLogQueue = null; } settings.Set(ServiceControlSettings.HostName, HostName); settings.Set(ServiceControlSettings.Port, Port.ToString()); settings.Set(ServiceControlSettings.DatabaseMaintenancePort, DatabaseMaintenancePort.ToString(), Version); settings.Set(ServiceControlSettings.LogPath, LogPath); settings.Set(ServiceControlSettings.ForwardAuditMessages, ForwardAuditMessages.ToString(), Version); settings.Set(ServiceControlSettings.ForwardErrorMessages, ForwardErrorMessages.ToString(), Version); settings.Set(ServiceControlSettings.AuditRetentionPeriod, AuditRetentionPeriod.ToString(), Version); settings.Set(ServiceControlSettings.ErrorRetentionPeriod, ErrorRetentionPeriod.ToString(), Version); settings.RemoveIfRetired(ServiceControlSettings.HoursToKeepMessagesBeforeExpiring, Version); settings.Set(ServiceControlSettings.AuditQueue, AuditQueue, Version); settings.Set(ServiceControlSettings.ErrorQueue, ErrorQueue); settings.Set(ServiceControlSettings.AuditLogQueue, AuditLogQueue, Version); settings.Set(ServiceControlSettings.ErrorLogQueue, ErrorLogQueue, Version); if (RemoteInstances != null) { if (Compatibility.RemoteInstancesDoNotNeedQueueAddress.SupportedFrom <= Version) { foreach (var instance in RemoteInstances) { instance.QueueAddress = null; } } settings.Set(ServiceControlSettings.RemoteInstances, RemoteInstanceConverter.ToJson(RemoteInstances), Version); } }
public void ApplyConfigChange() { var accountName = string.Equals(ServiceAccount, "LocalSystem", StringComparison.OrdinalIgnoreCase) ? "System" : ServiceAccount; var oldSettings = InstanceFinder.FindServiceControlInstance(Name); var fileSystemChanged = !string.Equals(oldSettings.LogPath, LogPath, StringComparison.OrdinalIgnoreCase); var queueNamesChanged = !(string.Equals(oldSettings.AuditQueue, AuditQueue, StringComparison.OrdinalIgnoreCase) && string.Equals(oldSettings.ErrorQueue, ErrorQueue, StringComparison.OrdinalIgnoreCase) && string.Equals(oldSettings.AuditLogQueue, AuditLogQueue, StringComparison.OrdinalIgnoreCase) && string.Equals(oldSettings.ErrorLogQueue, ErrorLogQueue, StringComparison.OrdinalIgnoreCase) && oldSettings.ForwardErrorMessages == ForwardErrorMessages && oldSettings.ForwardAuditMessages == ForwardAuditMessages ); RecreateUrlAcl(oldSettings); if (fileSystemChanged) { var account = new NTAccount(accountName); var modifyAccessRule = new FileSystemAccessRule(account, FileSystemRights.Modify | FileSystemRights.Traverse | FileSystemRights.ListDirectory, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow); FileUtils.CreateDirectoryAndSetAcl(LogPath, modifyAccessRule); } Service.Description = Description; var configuration = ConfigurationManager.OpenExeConfiguration(Service.ExePath); var settings = configuration.AppSettings.Settings; var version = Version; settings.Set(SettingsList.HostName, HostName); settings.Set(SettingsList.Port, Port.ToString()); settings.Set(SettingsList.DatabaseMaintenancePort, DatabaseMaintenancePort.ToString()); settings.Set(SettingsList.LogPath, LogPath); settings.Set(SettingsList.ForwardAuditMessages, ForwardAuditMessages.ToString()); settings.Set(SettingsList.ForwardErrorMessages, ForwardErrorMessages.ToString(), version); settings.Set(SettingsList.AuditRetentionPeriod, AuditRetentionPeriod.ToString(), version); settings.Set(SettingsList.ErrorRetentionPeriod, ErrorRetentionPeriod.ToString(), version); settings.RemoveIfRetired(SettingsList.HoursToKeepMessagesBeforeExpiring, version); settings.Set(SettingsList.AuditQueue, AuditQueue); settings.Set(SettingsList.ErrorQueue, ErrorQueue); if (Version >= Compatibility.ForwardingQueuesAreOptional.SupportedFrom) { if (!ForwardErrorMessages) { ErrorLogQueue = null; } if (!ForwardAuditMessages) { AuditLogQueue = null; } } settings.Set(SettingsList.ErrorLogQueue, ErrorLogQueue); settings.Set(SettingsList.AuditLogQueue, AuditLogQueue); configuration.ConnectionStrings.ConnectionStrings.Set("NServiceBus/Transport", ConnectionString); configuration.Save(); var passwordSet = !string.IsNullOrWhiteSpace(ServiceAccountPwd); var accountChanged = !string.Equals(oldSettings.ServiceAccount, ServiceAccount, StringComparison.OrdinalIgnoreCase); var connectionStringChanged = !string.Equals(ConnectionString, oldSettings.ConnectionString, StringComparison.Ordinal); //have to save config prior to creating queues (if needed) if (queueNamesChanged || accountChanged || connectionStringChanged) { try { QueueCreation.RunQueueCreation(this); } catch (QueueCreationFailedException ex) { ReportCard.Errors.Add(ex.Message); } catch (QueueCreationTimeoutException ex) { ReportCard.Errors.Add(ex.Message); } } if (passwordSet || accountChanged) { Service.ChangeAccountDetails(accountName, ServiceAccountPwd); } }