2011-10-10 14 views

Respuesta

23

Debe crear una ruta de ignorar para los tipos específicos de archivos que no desea que se sirvan a través de ASP.NET MVC.

Agregue lo siguiente a sus rutas, para los tipos de archivos que desea ignorar.

Las siguientes obras de los archivos en la raíz:

routes.IgnoreRoute("{file}.css"); 
routes.IgnoreRoute("{file}.jpg"); 
routes.IgnoreRoute("{file}.gif"); 

Si desea ignorar los archivos en un directorio específico, puede hacer esto:

routes.IgnoreRoute("assets/{*pathInfo}"); 

Si desea combinar estos en una ruta, puede (por ejemplo, ignorar determinados tipos de archivos en un directorio):

routes.IgnoreRoute("{assets}", new { assets = @".*\.(css|js|gif|jpg)(/.)?" }); 

Este overload of IgnoreRoute acepta una url (el primer argumento) y un objeto de Constraints de cosas que ignorar.

Dado que RouteConstraints en ASP.NET MVC se puede implementar de varias formas (incluyendo una expresión regular), puede poner expresiones regulares estándar en el segundo argumento.

Si desea implementar una restricción personalizada, there is lots of useful documentation on that subject (supongamos, si su restricción es dinámica en tiempo de ejecución).

+0

Por qué puede usted acaba de hacer routes.RouteExistingFiles = false; ¿No debería estar funcionando para los archivos que existen? –

2

En Global.asax.cs en el comienzo del método RegisterRoutes escribir lo siguiente:

routes.IgnoreRoute("Content/{*pathInfo}"); 

reemplazando Content con el nombre de una carpeta que contiene los archivos estáticos.

George, sin embargo, siempre More comprehensive solution

6

archivos estáticos no son procesados ​​por ASP.NET MVC, a menos que tenga una ruta que coincida con la URL de un archivo estático. Tal vez está preguntando sobre archivos estáticos procesados ​​por ASP.NET, en ese caso no debe usar runAllManagedModulesForAllRequests="true". Aquí hay un post con más información.

15

Tenga cuidado, la respuesta de @ george-stocker funciona para los archivos estáticos en el directorio raíz solamente !!!

Para la captura de los archivos estáticos en todos los directorios posibles/subdirectorios, utilice una regla de ignorar con una "condición", como este:

routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" }); 
+0

La pregunta era ambigua, pero para mí, ignorar por extensión de archivo implica que quieres hacer esto globalmente (incluidos los subdirectorios). Esta respuesta logra que mientras que la respuesta aceptada no lo hace. –

Cuestiones relacionadas