diff --git a/F4SDM42WebApi/F4SD - M42WebApi.csproj b/F4SDM42WebApi/F4SD - M42WebApi.csproj index 460d860..42bde02 100644 --- a/F4SDM42WebApi/F4SD - M42WebApi.csproj +++ b/F4SDM42WebApi/F4SD - M42WebApi.csproj @@ -13,7 +13,7 @@ false 6673a25d-33d6-4072-91d9-abed4be1a966 C4ITF4SD*.* - 1.4.0.12 + 1.4.0.13 true diff --git a/F4SDM42WebApi/F4SDHelperService.cs b/F4SDM42WebApi/F4SDHelperService.cs index 1807523..a68fa60 100644 --- a/F4SDM42WebApi/F4SDHelperService.cs +++ b/F4SDM42WebApi/F4SDHelperService.cs @@ -52,6 +52,7 @@ namespace C4IT.F4SD private const string placeHolderSubject = "PARAM_SUBJECT"; private const string placeHolderDescription = "PARAM_DESCRIPTION"; + private static bool? ticketAndServiceRequestEnabledCache; private const string c4itf4sdmonLinkBase = "f4sdsend://localhost"; private const string F4SDTicketTableName = "M42WPM-TICKETS-INFOS"; @@ -1685,18 +1686,23 @@ namespace C4IT.F4SD private static bool ticketAndServiceRequestEnabled() { - var configProvider = F4SDM42WebApiController.defaultInstance._globalConfigurationProvider; + if (ticketAndServiceRequestEnabledCache.HasValue) + return ticketAndServiceRequestEnabledCache.Value; - // using reflection because signature of "ReloadSettings" changed in ESM v12 - var method = configProvider.GetType().GetMethod("ReloadSettings"); - - if (method != null) + try { - var defaultParameters = method.GetParameters().Select(p => p.HasDefaultValue ? p.DefaultValue : null).ToArray(); - method.Invoke(configProvider, defaultParameters); + var configProvider = F4SDM42WebApiController.defaultInstance?._globalConfigurationProvider; + var enabled = configProvider?.ServiceDeskConfiguration?.TicketAndServiceRequestEnabled ?? true; + ticketAndServiceRequestEnabledCache = enabled; + return enabled; + } + catch (Exception E) + { + LogException(E); + LogEntry("Could not read ServiceDeskConfiguration.TicketAndServiceRequestEnabled. Falling back to enabled ticket/service request mode.", LogLevels.Warning); + ticketAndServiceRequestEnabledCache = true; + return true; } - - return configProvider.ServiceDeskConfiguration.TicketAndServiceRequestEnabled; } internal async Task> getTicketDetails(List ticketObjectIds)