private void ClearFileFromCache(SimpleVirtualFile file) { Dictionary<string, SimpleVirtualFile> virtualFiles; if (!_virtualFileCache.TryGetValue(file.RemoteAddress, out virtualFiles)) return; if (virtualFiles.ContainsKey(file.VirtualPath)) virtualFiles.Remove(file.VirtualPath); if (virtualFiles.Count == 0) _virtualFileCache.Remove(file.RemoteAddress); }
private bool CacheAndCheckVirtual(string path) { if (!_extensions.Any(path.Contains)) return false; string remoteAddress; if (!TryGetRemoteAddress(HttpContext.Current, out remoteAddress)) return false; Dictionary<string, SimpleVirtualFile> virtualFiles; if (_virtualFileCache.TryGetValue(remoteAddress, out virtualFiles) && virtualFiles.ContainsKey(path)) return true; var simpleVFile = new SimpleVirtualFile(remoteAddress, path.TrimStart('~')); if (!simpleVFile.Exists) return false; if (virtualFiles != null) virtualFiles.Add(path, simpleVFile); else _virtualFileCache.Add(remoteAddress, new Dictionary<string, SimpleVirtualFile> { { path, simpleVFile } }); return true; }
private bool TryGetVirtualFile(HttpContext context, string virtualPath, out SimpleVirtualFile file) { file = null; string remoteAddress; if (!TryGetRemoteAddress(context, out remoteAddress)) return false; Dictionary<string, SimpleVirtualFile> virtualFiles; if (!_virtualFileCache.TryGetValue(remoteAddress, out virtualFiles) || !virtualFiles.ContainsKey(virtualPath)) return false; file = virtualFiles[virtualPath]; return true; }