gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 在重写的 VirtualPathProvider 中禁用 View 缓存

转载 作者:行者123 更新时间:2023-12-04 15:03:55 24 4
gpt4 key购买 nike

我正在使用可移植区域做一些开发工作,所以我有一个被覆盖的 VirtualPathProvider .

我的 public override bool FileExists(string virtualPath)似乎每隔几分钟才被调用一次,这意味着 MVC 正在缓存 View 。

这在生产中可能很棒,但我不知道如何在开发中关闭它。我想要 VirtualPathProvider在每次使用 View 时都被调用。

有什么建议?

最佳答案

为了子孙后代回答我自己的问题......

我们最终覆盖了 GetCacheDependency 调用以确保 View 永远不会被缓存。 (我们手动缓存 View )。我们必须创建一个 FakeCacheDependency 来让我们使用缓存中的最后修改日期。

在我们的应用程序中,我们的虚拟 View 称为 CondorVirtualFiles。 (在构建 View 引擎时,你需要给它一个很酷的名字。)

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);
}
}

关于asp.net-mvc - ASP.NET MVC 在重写的 VirtualPathProvider 中禁用 View 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5303785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com