2010-09-19 19 views
8

Ho implementato un VirtualPathProvider. VirtualPathProvider legge la vista dal file system.ASP.NET MVC 2 VirtualPathProvider GetFile ogni volta per ogni richiesta

Tuttavia il mio problema è il metodo GetFile(string virtualPath) non viene eseguito ogni volta per ogni richiesta. Penso che sia correlato al caching, non è vero? Quello che voglio è ottenere il file ogni volta per ogni richiesta. Perché in alcuni casi, la pagina nel file system verrà modificata e gli utenti vorranno che il sistema mostri immediatamente le modifiche.

Grazie.

+0

Il tuo provider viene chiamato ogni volta che si trova in modalità di debug? Se è così, allora è il caching, dato che la cache della vista è disabilitata quando il debug è abilitato. – Clicktricity

+0

Grazie per la risposta. Il VirtualPathProvider viene chiamato per ogni richiesta, ma viene chiamato solo il metodo 'bool FileExists (string virtualPath)' per ogni richiesta. Ho provato a sovrascrivere tutti i metodi in VirtualPathProvider, ma non riesco ancora a trovare la soluzione. –

+0

Infatti, ho appena eseguito direttamente un esempio da http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html. –

risposta

15

Ho trovato la soluzione da solo su internet.

Davvero grazie jbeall risposto il 07-15-2008, 11:05 AM.

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

In parole brevi, sovrascrive i seguenti metodi

  1. GetCacheDependency - ritorno sempre nullo
  2. GetFileHash - ritorno sempre diverso valore

Dopo queste modifiche, ad ogni richiesta , MVC ottiene il file direttamente dal sorgente.

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

    } 
} 
Problemi correlati