2011-03-14 4 views
5

私は可搬域を使用していくつかの開発作業を行っているので、オーバーライドされたVirtualPathProviderがあります。ASP.NET MVCオーバーライドされたVirtualPathProviderのビューキャッシングを無効にする

私のpublic override bool FileExists(string virtualPath)は、MVCがビューをキャッシュしていることを意味する数分ごとに呼び出されるようです。

これはおそらく本番環境では素晴らしいですが、私はdevでそれをオフにする方法を理解できません。ビューの使用ごとにVirtualPathProviderが呼び出されるようにします。

提案がありますか?将来の世代のために自分の質問に答える

+0

ブラウザを表示していないMVCであることを確認してください。 ctrl-F5を押して、ビューが呼び出されたかどうかを確認します。 –

+0

質問とその答えをありがとう、それはDLL内のビューを持つときに私のむしろ迷惑なキャッシングの問題を解決! –

答えて

6

....

我々は、ビューがキャッシュされないことを確実にするために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); 
     } 
    } 
+0

+1ありがとうございます!ちょうどいくつかのアイデアを共有したい'GetFileHash()'メソッドもオーバーライドする必要があります。また、 'FakeCacheDependency'インスタンスの代わりに' null'を返すこともできます。そして私は役に立つリソースを見つけました:http://blog.rocketbase.co.uk/2011/04/asp-net-mvc-virtual-path-provider/ – Warlock

関連する問題