route net mvc attribute asp asp.net-mvc asp.net-mvc-routing asp.net-4.5

asp.net-mvc - mvc - route controller net core



.NET 4.5 MVC RouteCollection.LowercaseUrls se rompe cuando se usa Área (1)

De hecho, esto parece ser un error en la interacción entre ASP.NET MVC y la nueva característica LowercaseUrls de ASP.NET 4.5 en el enrutamiento.

He registrado un error para MVC aquí: http://aspnetwebstack.codeplex.com/workitem/685

¡Gracias por reportar esto!

Como menciona Cristi Pufu, parece que otros han escrito algunos paquetes de NuGet para manejar escenarios similares:

EDITAR 23/04/2013 - Recientemente hemos aceptado una solicitud de extracción con una solución para este problema para ASP.NET MVC 5.

Se agregó una nueva propiedad a RouteCollection con .NET Framework 4.5:

http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.lowercaseurls.aspx

Esto funciona muy bien, hasta que agregue un Área a su proyecto. Todas las URL son de nuevo en mayúsculas.

¿Alguna idea de por qué sucede esto? Es fácil de reproducir:

  1. Crear nueva aplicación de Internet MVC 4 (.NET 4.5)
  2. Inicie la función RouteConfig.RegisterRoutes con: route.LowercaseUrls = true;
  3. Ejecute el proyecto y verá que todas las direcciones URL generadas ahora están en minúsculas.
  4. Añadir un área al proyecto.
  5. Ejecuta el proyecto de nuevo y verás que todas las URL son de nuevo en mayúsculas.

Se rompe en el punto en que se ejecuta context.MapRoute en AreaRegistration.RegisterArea. Cuando comento eso, obtuve Urls en minúscula. Descoméntalo, y las URLs en mayúsculas están de vuelta.

Me parece que Microsoft sabe que esto tiene errores y no anuncia esta nueva característica, ya que es una característica realmente excelente, pero solo se menciona en los documentos de MSDN.