我正在使用便携式区域做一些开发工作,所以我有一个被覆盖的VirtualPathProvider
。
我的public override bool FileExists(string virtualPath)
似乎每隔几分钟就会调用一次,这意味着MVC正在缓存视图。
这在制作中可能很棒,但我无法弄清楚如何在开发中关闭它。我希望VirtualPathProvider
在每次使用视图时都被调用。
有什么建议吗?
答案 0 :(得分:6)
为了后代而回答我自己的问题....
我们最终覆盖了GetCacheDependency调用,以确保视图永远不会被缓存。 (我们手动缓存视图)。我们必须创建一个FakeCacheDependency,它允许我们使用缓存中的最后修改日期。
在我们的应用程序中,我们的虚拟视图称为CondorVirtualFiles。 (构建视图引擎时,需要给它一个很酷的名称。)
public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
{
var view = this.GetFile(virtualPath);
if (view is CondorVirtualFile)
{
FakeCacheDependency fcd = new FakeCacheDependency((view as CondorVirtualFile).LastModified);
return fcd;
}
return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}
public class FakeCacheDependency : System.Web.Caching.CacheDependency
{
public FakeCacheDependency(DateTime lastModified)
{
base.SetUtcLastModified(lastModified);
}
public FakeCacheDependency()
{
base.SetUtcLastModified(DateTime.UtcNow);
}
}