2011-08-07 14 views
8

Estoy ejecutando IIS 7.5 en Windows 7. Mi aplicación ASP .NET utiliza un VirtualPathProvider. La mayoría de los archivos (páginas aspx) son devueltos y procesados ​​por mi VirtualPathProvider. Los archivos estáticos (css/images) no lo son. Producen un error HTTP 404 si trato de buscarlos directamente (o si mi página virtual aspx hace referencia a ellos)ASP.NET VirtualPathProvider con archivos estáticos Problema

He verificado que mi web.config tiene el controlador correcto registrado para los tipos de archivos estáticos.

Lo raro es esto:

  1. Si trato de buscar un archivo GIF no virtual (uno que realmente existe en el sistema de archivos bajo la raíz del sitio web), que rinde bien.

  2. Si ejecuto usando WebDev en Visual Studio en lugar de IIS, los archivos virtuales gif se procesan bien.

  3. En el modo de depuración, en VirtualPathProvider.GetFile, puedo ver a mi VirtualPathProvider devolver un ejemplo perfectamente válido de mi archivo gif virtual de la derecha antes de la página devuelve el error 404 ... así que sé mi VirtualPathProvider está trabajando muy bien.

NOTA, cuando digo IIS, no me refiero a un entorno desplegado. Me refiero a cambiar la configuración del proyecto para usar IIS en lugar de WebDev.

¿Alguna idea?

Gracias.

Respuesta

11

... y answer:

El problema que he encontrado un montón, sobre todo con el enrutamiento a aparecer, es que incluso con un mapa comodín para ASP.NET, mis archivos estáticos terminan con un código de error 404 porque el enrutamiento los está atrapando, enviando las solicitudes al controlador MVC y no se encuentra ninguna ruta. Fallar.

Por lo tanto, como nota para mí (y para cualquier otra persona que esté haciendo algo similar), esto es lo que he encontrado que debe hacer para que su VPP sirva archivos estáticos.

En primer lugar, usted necesita para obtener los tipos de archivo estático deseados asignadas a ASP.NET ...

+1

Oh los dolores de cabeza que me has salvado! Gran artículo, gran descubrimiento. – lukiffer

+0

Éste me salvó algunas horas de trabajo. ¡Gracias por compartir! – amaters

+0

¡Este artículo ahorró horas! ¡Gracias! –

Cuestiones relacionadas