我已经实现了一个VirtualPathProvider。 VirtualPathProvider从文件系统读取视图。每次请求ASP.NET MVC 2 VirtualPathProvider GetFile
但是我的问题是每次请求都不会执行每次都执行的方法GetFile(string virtualPath)
。我认为这与缓存有关,不是吗?我想要的是每次获取文件的每个请求。因为在某些情况下,文件系统中的页面将被修改,并且用户希望系统立即显示更改。
谢谢。
我已经实现了一个VirtualPathProvider。 VirtualPathProvider从文件系统读取视图。每次请求ASP.NET MVC 2 VirtualPathProvider GetFile
但是我的问题是每次请求都不会执行每次都执行的方法GetFile(string virtualPath)
。我认为这与缓存有关,不是吗?我想要的是每次获取文件的每个请求。因为在某些情况下,文件系统中的页面将被修改,并且用户希望系统立即显示更改。
谢谢。
我自己在互联网上找到了解决方案。
真的很感谢jbeall回复于07-15-2008,11:05 AM。
http://forums.asp.net/t/1289756.aspx
总而言之一句话,覆盖下面的方法
GetCacheDependency
- 总是返回nullGetFileHash
- 始终返回不同的值这些修改后,为每个请求,MVC直接从源文件获取文件。
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();
}
}
每次处于调试模式时,您的提供者都会被调用吗?如果是这样,那么它就是缓存,因为启用调试时禁用视图缓存。 – Clicktricity 2010-09-20 22:03:59
谢谢你的回应。每个请求都会调用VirtualPathProvider,但每个请求只调用“bool FileExists(string virtualPath)”方法。我试图覆盖VirtualPathProvider中的所有方法,但我仍然找不到解决方案。 – 2010-09-22 04:06:35
实际上,我只是直接从http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html运行一个示例。 – 2010-09-22 04:11:46