/// <inheritdoc /> protected override Stream CurrentOpen(PathDefinition definition, string virtualPath) { bool isValidControlPresentationPath; ControlPresentation controlPresentation = this.GetControlPresentation(definition, virtualPath, out isValidControlPresentationPath); if (controlPresentation != null && !controlPresentation.Data.IsNullOrEmpty()) { var bytes = RouteHelper.GetContentWithPreamble(controlPresentation.Data); return(new MemoryStream(bytes)); } throw new ArgumentException("Could not find resource at " + virtualPath + " in the database."); }
/// <inheritdoc /> protected override System.Web.Caching.CacheDependency GetCurrentCacheDependency(PathDefinition definition, string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) { bool isValidControlPresentationPath; ControlPresentation controlPresentation = this.GetControlPresentation(definition, virtualPath, out isValidControlPresentationPath); if (!isValidControlPresentationPath) { // Return null for virtual paths that are not ControlPresentation paths since they do not depend on Control Presentations. return(null); } if (controlPresentation != null) { return(new ControlPresentationCacheDependency(controlPresentation.Id.ToString())); } // Change to any ControlPresentation record will invalidate the cache for this virtual path. return(new ControlPresentationCacheDependency(typeof(ControlPresentation))); }
/// <inheritdoc /> protected override bool CurrentExists(PathDefinition definition, string virtualPath) { var cacheManager = this.GetCacheManager(); var key = this.GetExistsCacheKey(definition, virtualPath); bool?result = cacheManager[key] as bool?; if (result == null) { lock (this.existsLock) { result = cacheManager[key] as bool?; if (result == null) { bool isValidControlPresentationPath; ControlPresentation controlPresentation = this.GetControlPresentation(definition, virtualPath, out isValidControlPresentationPath); result = controlPresentation != null && !controlPresentation.Data.IsNullOrEmpty(); cacheManager.Add(key, result, Microsoft.Practices.EnterpriseLibrary.Caching.CacheItemPriority.Normal, null, this.GetControlPresentationsCacheExpirations()); } } } return(result.Value); }