【问题标题】:ASP.NET MVC 2 VirtualPathProvider GetFile every time for every request每次请求的 ASP.NET MVC 2 VirtualPathProvider GetFile
【发布时间】:2010-09-19 23:12:06
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 在调试模式下是否每次都会调用您的提供程序?如果是这样,那么它就是缓存,因为启用调试时视图缓存被禁用。
  • 感谢您的回复。每个请求都会调用 VirtualPathProvider,但每个请求只调用 bool FileExists(string virtualPath) 方法。我已经尝试覆盖 VirtualPathProvider 中的所有方法,但我仍然找不到解决方案。
  • 其实我只是直接从padcom13.blogspot.com/2009/04/virtualpathprovider-example.html跑了一个例子。

标签: asp.net-mvc asp.net-mvc-2 virtualpathprovider


【解决方案1】:

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

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

http://forums.asp.net/t/1289756.aspx

简而言之,覆盖以下方法

  1. GetCacheDependency - 总是返回 null
  2. GetFileHash - 总是返回不同的值

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

【讨论】:

    【解决方案2】:
    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();
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-11
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多