我正在使用便携式区域做一些开发工作,所以我有一个被覆盖的VirtualPathProvider
.
我 public override bool FileExists(string virtualPath)
似乎每隔几分钟就会被调用一次,这意味着 MVC 正在缓存视图。
这在生产中可能很棒,但我不知道如何在开发中将其关闭。我希望在VirtualPathProvider
每次使用视图时都调用它。
有什么建议么?
我正在使用便携式区域做一些开发工作,所以我有一个被覆盖的VirtualPathProvider
.
我 public override bool FileExists(string virtualPath)
似乎每隔几分钟就会被调用一次,这意味着 MVC 正在缓存视图。
这在生产中可能很棒,但我不知道如何在开发中将其关闭。我希望在VirtualPathProvider
每次使用视图时都调用它。
有什么建议么?
为了子孙后代,回答我自己的问题......
我们最终覆盖了 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);
}
}