private CacheEntry GetCacheEntry(string key) { try { _memoryCache.TryGetValue(key, out CacheEntry cacheEntry); string fileName = null; if (cacheEntry == null) { fileName = GetFileName(key); if (!File.Exists(fileName)) { return(null); } byte[] file = File.ReadAllBytes(fileName); cacheEntry = CacheEntry.Deserialize(file); _memoryCache[key] = cacheEntry; _esimatedUsedMemoryBytes += (cacheEntry as ResponseCacheEntry)?.Body?.Length ?? 0; PurgeExcessMemoryAsync(); } if (cacheEntry.Created.Add(cacheEntry.ValidFor) < DateTime.UtcNow || cacheEntry.ServerVersion != _versionIdentifier) { _memoryCache[key] = null; _esimatedUsedMemoryBytes -= (cacheEntry as ResponseCacheEntry)?.Body?.Length ?? 0; if (fileName != null) { File.Delete(fileName); } return(null); } cacheEntry.LastAccessed = DateTime.UtcNow; return(cacheEntry); } catch { } return(null); }