我正在使用可移植区域进行开发工作,因此我已经覆盖了VirtualPathProvider。我的public override bool FileExists(string virtualPath)似乎只被调用了几分钟,这意味着MVC正在缓存视图。这在生产环境中可能很好,但我无法弄清如何在开发过程中关闭它。我希望每次使用视图时都会调用VirtualPathProvider。有什么建议吗?
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);
}
}
GetFileHash()
方法。此外,你可以返回 null
而不是一个 FakeCacheDependency
实例。并且我找到了一个有用的资源:http://blog.rocketbase.co.uk/2011/04/asp-net-mvc-virtual-path-provider/ - Warlock