Exemple #1
0
 public override string GetCacheKey(string virtualPath)
 {
     if (!IsAppResourcePath(virtualPath))
     {
         return(parent.GetCacheKey(virtualPath));
     }
     else
     {
         return(null); // base.GetCacheKey(virtualPath);
     }
 }
        /// <summary>
        /// 利用指定 VirtualPathProvider 将虚拟路径所指向文件当作静态文件加载。
        /// </summary>
        /// <param name="context">当前请求上下文</param>
        /// <param name="provider">指定的 VirtualPathProvider</param>
        /// <param name="virtualPath">虚拟路径</param>
        /// <returns>加载结果</returns>
        public HtmlContentResult LoadContent(HttpContextBase context, VirtualPathProvider provider, string virtualPath)
        {
            if (!VirtualPathUtility.IsAppRelative(virtualPath))
            {
                return(null);
            }

            if (!provider.FileExists(virtualPath))
            {
                return(null);
            }

            var file = provider.GetFile(virtualPath);

            if (file == null)
            {
                return(null);
            }



            var key = provider.GetCacheKey(virtualPath) ?? "StaticFile_" + virtualPath;

            var content = context.Cache.Get(key) as string;


            if (content == null)
            {
                var now = DateTime.UtcNow;

                content = LoadContent(file);
                var dependency = provider.GetCacheDependency(virtualPath, new[] { virtualPath }, now) ?? new CacheDependency(HostingEnvironment.MapPath(virtualPath));


                context.Cache.Insert(key, content, dependency);
            }


            return(new HtmlContentResult(this, content, new Uri(baseUri, VirtualPathUtility.ToAbsolute(virtualPath)), key));
        }
        /// <summary>
        /// 利用指定 VirtualPathProvider 将虚拟路径所指向文件当作静态文件加载。
        /// </summary>
        /// <param name="provider">指定的 VirtualPathProvider</param>
        /// <param name="virtualPath">虚拟路径</param>
        /// <returns>加载结果</returns>
        public HtmlContentResult LoadContent(VirtualPathProvider provider, string virtualPath)
        {
            if (!VirtualPathUtility.IsAppRelative(virtualPath))
            {
                return(null);
            }

            if (!provider.FileExists(virtualPath))
            {
                return(null);
            }

            var file = provider.GetFile(virtualPath);

            if (file == null)
            {
                return(null);
            }



            var key = provider.GetCacheKey(virtualPath) ?? "StaticFile_" + virtualPath;

            var content = HttpRuntime.Cache.Get(key) as string;


            if (content == null)
            {
                var dependency = HtmlServices.CreateCacheDependency(provider, virtualPath);
                content = LoadContent(file);

                HttpRuntime.Cache.Insert(key, content, dependency);
            }


            return(new HtmlContentResult(content, key));
        }