private void ReloadConfiguration(string filename, bool continueOnError = true) { if (Filename != filename) { return; } lock (_mappings) { try { _mappings.Clear(); var json = _configurationFileReader.Read(Path.Combine(CurrentPath, filename)); var configRoot = JsonSerializer.Deserialize <ConfigurationRoot>(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); ApiToken = configRoot?.ApiToken; Endpoint = configRoot?.Endpoint; HttpMethod = configRoot?.HttpMethod; var mappings = configRoot?.Mappings ?? new List <ConfigurationMapping>(); foreach (var mapping in mappings) { _mappings[mapping.Key] = mapping; } } catch (Exception ex) { if (continueOnError) { _logger.LogError(FormattableString.Invariant($"Unable to read configuration file ({Filename}), continuing with previous configuration"), ex); } else { _logger.LogError(FormattableString.Invariant($"Unable to read configuration file ({Filename}), stopping service."), ex); throw; } } } }