Asp.net mvc ASP.NET MVC 2 VirtualPathProvider每次为每个请求提供GetFile

Asp.net mvc ASP.NET MVC 2 VirtualPathProvider每次为每个请求提供GetFile,asp.net-mvc,asp.net-mvc-2,virtualpathprovider,Asp.net Mvc,Asp.net Mvc 2,Virtualpathprovider,我已经实现了一个VirtualPathProvider。VirtualPathProvider从文件系统读取视图 然而,我的问题是方法GetFile(stringvirtualpath)并不是每次对每个请求都执行。我认为这与缓存有关,不是吗?我想要的是每次为每个请求获取文件。因为在某些情况下,文件系统中的页面将被修改,用户希望系统立即显示更改 谢谢。我自己在互联网上找到了解决方案 非常感谢jbeall于2008年7月15日上午11:05回复 简而言之,重写以下方法 GetCacheDepend

我已经实现了一个VirtualPathProvider。VirtualPathProvider从文件系统读取视图

然而,我的问题是方法
GetFile(stringvirtualpath)
并不是每次对每个请求都执行。我认为这与缓存有关,不是吗?我想要的是每次为每个请求获取文件。因为在某些情况下,文件系统中的页面将被修改,用户希望系统立即显示更改


谢谢。

我自己在互联网上找到了解决方案

非常感谢jbeall于2008年7月15日上午11:05回复

简而言之,重写以下方法

  • GetCacheDependency
    -始终返回null
  • GetFileHash
    -始终返回不同的值

  • 在这些修改之后,对于每个请求,MVC都会直接从源代码获取文件。

    在调试模式下,是否每次都会调用提供程序?如果是,那么它是缓存,因为启用调试时视图缓存被禁用。感谢您的回复。每个请求都会调用virtualPath Provider,但每个请求都只会调用
    bool FileExists(string virtualPath)
    方法。我试图覆盖VirtualPathProvider中的所有方法,但仍然找不到解决方案。
    public class MyVirtualPathProvider : VirtualPathProvider
    {
    
        public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
        {
            return null;
    
        }
    
        public override String GetFileHash(String virtualPath, IEnumerable virtualPathDependencies)
        {
            return Guid.NewGuid().ToString();
    
        }
    }