Pregunta

Estoy probando el enrutamiento ASP.NET MVC y, por supuesto, me encontré con un problema.Tengo una sección, /Admin/Pages/, y también se puede acceder a ella a través de /Pages/, lo cual no debería ser así.¿Qué podría faltarme?

El código de ruta en global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Pages",    // Route name
            "Admin/Pages/{action}/{id}",  // URL with parameters
            // Parameter defaults
            new { controller = "Pages", action = "Index", id = "" }  
        );

        routes.MapRoute(
            "Default",   // Route name
            "{controller}/{action}/{id}",   // URL with parameters
             // Parameter defaults
            new { controller = "Home", action = "Index", id = "" }  
        );

    }

¡Gracias!

¿Fue útil?

Solución

Sugeriría agregar una ruta explícita para /Pages/ al principio.

El problema es que lo maneja la ruta predeterminada y deriva:

controlador = "páginas" action = "index" id = ""

que son exactamente los mismos que los parámetros de su ruta de administrador.

Otros consejos

Para problemas de enrutamiento como este, deberías probar mi Depurador de rutas montaje (uso sólo en pruebas).Puede ayudar a resolver este tipo de problemas.

PDSi está intentando proteger el controlador de páginas, asegúrese de utilizar el atributo [Autorizar].No confíe únicamente en la autorización de URL.

Puede agregar una restricción a la regla predeterminada para que la etiqueta {Controlador} no pueda ser "Páginas".

Tiene en su primera ruta el token/parámetro {acción} que entra en conflicto con la configuración de la acción predeterminada.Intente cambiar el nombre del parámetro en su ruta o elimine el nombre de la acción predeterminada.

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