ASP.NET MVC 2 VirtualPathProvider每次请求都需要获取文件

8
我已经实现了一个VirtualPathProvider。该VirtualPathProvider从文件系统中读取视图。
然而,我的问题是每个请求并不总是执行方法GetFile(string virtualPath)。我认为这与缓存有关,是吗?我想要的是每次请求都获取文件。因为在某些情况下,文件系统中的页面将被修改,用户希望系统立即显示更改。
谢谢。

你的提供程序在调试模式下每次都被调用吗?如果是这样,那么它正在缓存,因为当启用调试时,视图缓存被禁用。 - Clicktricity
谢谢您的回复。VirtualPathProvider会在每个请求时被调用,但只有bool FileExists(string virtualPath)方法会被每个请求调用。我尝试重写了VirtualPathProvider中的所有方法,但仍然找不到解决方案。 - Alex Yeung
事实上,我只是直接从http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html运行了一个示例。 - Alex Yeung
2个回答

16
我在互联网上自己找到了解决方案。
非常感谢 jbeall 在 2008 年 07 月 15 日 11:05 AM 回复的帮助。 http://forums.asp.net/t/1289756.aspx 简单来说,需要重写以下方法:
1. GetCacheDependency - 总是返回 null
2. GetFileHash - 总是返回不同的值
通过这些修改,对于每个请求,MVC 直接从源文件中获取文件。

0
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();

    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接