2010-09-19 13 views
8

He implementado un VirtualPathProvider. VirtualPathProvider lee la vista desde el sistema de archivos.ASP.NET MVC 2 VirtualPathProvider GetFile cada vez para cada solicitud

Sin embargo, mi problema es que el método GetFile(string virtualPath) no se ejecuta cada vez para cada solicitud. Creo que está relacionado con el almacenamiento en caché, ¿no? Lo que quiero es obteniendo el archivo cada vez para cada solicitud. Porque en algunos casos, la página en el sistema de archivos se modificará y los usuarios querrán que el sistema muestre los cambios inmediatamente.

Gracias.

+0

¿Su proveedor recibe una llamada cada vez que está en modo de depuración? En ese caso, está en caché, ya que el almacenamiento en caché de vista está deshabilitado cuando la depuración está habilitada. – Clicktricity

+0

Gracias por su respuesta. VirtualPathProvider se llama para cada solicitud, pero solo se llama al método 'bool FileExists (string virtualPath)' para cada solicitud. Intenté anular todos los métodos en VirtualPathProvider, pero todavía no puedo encontrar la solución. –

+0

De hecho, acabo de ejecutar directamente un ejemplo de http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html. –

Respuesta

15

Encontré la solución yo mismo en internet.

Realmente gracias jbeall respondió el 15/07/2008, 11:05 a.m.

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

En pocas palabras, las redefiniciones de los métodos siguientes

  1. GetCacheDependency - siempre devuelven NULL
  2. GetFileHash - siempre devuelven un valor diferente

Después de estas modificaciones, para cada petición MVC obtiene el archivo de la fuente directamente.

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

    } 
} 
Cuestiones relacionadas