2010-09-19 14 views
8

Ich habe einen VirtualPathProvider implementiert. Der VirtualPathProvider liest die Ansicht aus dem Dateisystem.ASP.NET MVC 2 VirtualPathProvider GetFile jedes Mal für jede Anfrage

Allerdings ist mein Problem die Methode GetFile(string virtualPath) wird nicht jedes Mal für jede Anfrage ausgeführt. Ich denke, es hängt mit dem Caching zusammen, oder? Was ich will, ist Datei jedes Mal für jede Anfrage erhalten. In einigen Fällen wird die Seite im Dateisystem geändert und die Benutzer möchten, dass das System die Änderungen sofort anzeigt.

Danke.

+0

Wird Ihr Provider jedes Mal im Debug-Modus aufgerufen? Ist dies der Fall, wird zwischengespeichert, da das Anzeigen-Caching deaktiviert ist, wenn Debug aktiviert ist. – Clicktricity

+0

Vielen Dank für Ihre Antwort. Der VirtualPathProvider wird für jede Anfrage aufgerufen, aber nur die 'bool FileExists (string virtualPath)' Methode wird für jede Anfrage aufgerufen. Ich habe versucht, alle Methoden im VirtualPathProvider zu überschreiben, aber ich kann die Lösung immer noch nicht finden. –

+0

In der Tat, ich führe direkt ein Beispiel von http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html. –

Antwort

15

Ich habe die Lösung selbst im Internet gefunden.

Wirklich danke jbeall geantwortet am 15.07.2008, 11:05.

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

Kurz gesagt, überschreibt die folgenden Methoden

  1. GetCacheDependency - immer null zurück
  2. GetFileHash - immer anders Wert zurück

Nach diesen Modifikationen für jede Anforderung , MVC ruft die Datei direkt von der Quelle ab.

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

    } 
}