2010-09-19 63 views
8

我已經實現了一個VirtualPathProvider。 VirtualPathProvider從文件系統讀取視圖。每次請求ASP.NET MVC 2 VirtualPathProvider GetFile

但是我的問題是每次請求都不會執行每次都執行的方法GetFile(string virtualPath)。我認爲這與緩存有關,不是嗎?我想要的是每次獲取文件的每個請求。因爲在某些情況下,文件系統中的頁面將被修改,並且用戶希望系統立即顯示更改。

謝謝。

+0

每次處於調試模式時,您的提供者都會被調用嗎?如果是這樣,那麼它就是緩存,因爲啓用調試時禁用視圖緩存。 – Clicktricity 2010-09-20 22:03:59

+0

謝謝你的迴應。每個請求都會調用VirtualPathProvider,但每個請求只調用「bool FileExists(string virtualPath)」方法。我試圖覆蓋VirtualPathProvider中的所有方法,但我仍然找不到解決方案。 – 2010-09-22 04:06:35

+0

實際上,我只是直接從http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html運行一個示例。 – 2010-09-22 04:11:46

回答

15

我自己在互聯網上找到了解決方案。

真的很感謝jbeall回覆於07-15-2008,11:05 AM。

http://forums.asp.net/t/1289756.aspx

總而言之一句話,覆蓋下面的方法

  1. GetCacheDependency - 總是返回null
  2. GetFileHash - 始終返回不同的值

這些修改後,爲每個請求,MVC直接從源文件獲取文件。

0
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(); 

    } 
}