Pregunta

Si tengo una solicitud de un recurso en mi ASP.NET MVC1 (o 2) aplicación web para un recurso estático, digamos ... una imagen o un archivo JavaScript o un archivo css ... hace el marco .NET probar y ver si la petición coincide con la lista de rutas ... y, finalmente, no puede encontrar un controlador para ello?

por ejemplo.

Recurso: /Content/Images/Foo.png

¿Tiene esta solicitud, ve a través de mi lista de rutas .. no coincide con ningún controladores / acciones a esta solicitud y luego tratar ese camino directamente?

¿Fue útil?

Solución

Puede elegir si desea asignar un archivo existente o no establecer la RouteCollection.RouteExistingFiles propiedad

  

Obtiene o establece un valor que indica   si ASP.NET de enrutamiento debe manejar   URL que coinciden con un archivo existente.

Esto es lo que he leído de aquí :

  

Sin embargo, el sistema de enrutamiento todavía lo hace comprobar el sistema de archivos para ver si hay una       URL entrante pasa a coincidir con un archivo o disco, y si es así, el enrutamiento hace caso omiso de la solicitud (bypass       las entradas de ruta que la URL también podría coincidir) para que el archivo se puede servir directamente.       Esto es muy conveniente para los archivos estáticos, como imágenes, CSS y archivos JavaScript. Usted puede       los mantienen en su proyecto (por ejemplo, en su / o contenido / carpetas de secuencias de comandos), y luego de referencia y       servirlos forma directa, como si no estuviera usando enrutamiento en absoluto. Puesto que realmente existe el archivo       en el disco, que tiene prioridad sobre la configuración de enrutamiento.

     

Si, en cambio, quiere que su configuración de enrutamiento para tomar prioridad sobre los archivos en el disco, se puede establecer       RouteExistingFiles propiedad del RouteCollection true. (Es false por defecto.)

Otros consejos

Por defecto, el motor de enrutamiento no hará caso de los mapas de ruta para todos los archivos que existen físicamente en el servidor. En resumen, lo que necesita hacer nada para una aplicación MVC para enlazar a archivos estáticos.

También puede hacer un pequeño truco en IIS. Almaceno mis js, css, imágenes, etc en la carpeta de contenido por debajo del directorio virtual.

Si a continuación, ver las propiedades (en el administrador de IIS) de la carpeta de contenido, lo crea como un directorio virtual, a continuación, quitar la asignación de comodín. A continuación, establezca la parte posterior carpeta de contenido a un directorio normal. Esto debería dejar de solicitudes a estos archivos que están siendo manejados por el manejador aspnet_isapi.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top