async private Task ReloadParentFolderSettings(bool ifNewer = true) { try { if (this.Type == MapServiceType.Folder || String.IsNullOrWhiteSpace(this.Folder)) { return; } var folderMapService = _mss.MapServices .Where(s => s.Type == MapServiceType.Folder && this.Folder.Equals(s.Name, StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefault() as MapService; if (folderMapService == null) { return; } await folderMapService.ReloadServiceSettings(ifNewer); _folderSettings = folderMapService._settings; } catch (Exception ex) { throw ex; } finally { if (_folderSettings == null) { _folderSettings = new MapServiceSettings(); } } }
async private Task ReloadServiceSettings(bool ifNewer = true) { try { // Performance: Do not load a every Request if (_lastSettingsReload.HasValue && (DateTime.UtcNow - _lastSettingsReload.Value).TotalSeconds > 10) { return; } FileInfo fi = new FileInfo(this.SettingsFilename); if (ifNewer == true) { if (_settingsLastWriteTime.HasValue && _settingsLastWriteTime.Value >= fi.LastWriteTimeUtc) { return; } } if (fi.Exists) { _settings = JsonConvert.DeserializeObject <MapServiceSettings>( await File.ReadAllTextAsync(fi.FullName)); _settingsLastWriteTime = fi.LastWriteTimeUtc; } } catch (Exception ex) { throw ex; } finally { if (_settings == null) { _settings = new MapServiceSettings(); } await ReloadParentFolderSettings(ifNewer); } _lastSettingsReload = DateTime.UtcNow; }