Pregunta

Me gustaría ignorar varias rutas comodín.Con asp.net mvc vista previa 4, se envían con:

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

También me gustaría agregar algo como:

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

pero eso parece romper algunos de los asistentes que generan URL en mi programa.¿Pensamientos?

¿Fue útil?

Solución

Hay dos posibles soluciones aquí.

  1. Agregue una restricción a la ruta ignorada para asegurarse de que solo las solicitudes que deben ignorarse coincidan con esa ruta.Un poco torpe, pero debería funcionar.

    RouteTable.Routes.IgnoreRoute("{folder}/{*pathInfo}", new {folder="content"});
    
  2. ¿Qué hay en su directorio de contenido?De forma predeterminada, Enrutamiento no enruta archivos que existen en el disco (en realidad verifica VirtualPathProvider).Entonces, si coloca contenido estático en el directorio de Contenido, es posible que no necesite la ruta de ignorar.

Otros consejos

Esto puede resultar bastante complicado.

Al intentar descubrir cómo asignar datos de ruta a una ruta, el sistema actualmente busca de arriba hacia abajo hasta que encuentra algo donde se proporciona toda la información requerida y luego mete todo lo demás en los parámetros de consulta.

Dado que la información requerida para la ruta "Content/{*pathInfo}" siempre se cumple por completo (no se requiere ningún dato en esta ruta) y está cerca de la parte superior de la lista de rutas, entonces todos sus intentos de mapear rutas sin nombre serán coincide con este patrón y todas sus URL se basarán en esto ("Content?action=foo&controller=bar")

Desafortunadamente, no hay forma de evitar esto con las rutas de acción.Si utiliza rutas con nombre (es decir, si elige Html.RouteLink en lugar de Html.ActionLink), puede especificar el nombre de la ruta que desea que coincida.Es menos conveniente, pero más preciso.

En mi opinión, las rutas complejas hacen que el sistema de rutas de acción básicamente se caiga.En aplicaciones donde tengo algo distinto a las rutas predeterminadas, casi siempre termino volviendo a la generación de URL basada en rutas con nombre para asegurarme de obtener siempre la ruta correcta.

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