17

A new property to RouteCollection was added with .NET Framework 4.5:

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

This works great, until you add an Area to your project. All Urls are propercase again.

Any ideas why this happens? It's simple to reproduce:

  1. Create new MVC 4 Internet Application (.NET 4.5)
  2. Start RouteConfig.RegisterRoutes function with: routes.LowercaseUrls = true;
  3. Run the project and you'll see all generated Urls are now lowercase.
  4. Add an Area to the project.
  5. Run the project again and you'll see all Urls are propercase again!

It breaks at the point where context.MapRoute gets executed in AreaRegistration.RegisterArea. When I comment that out, I got lowercase Urls. Uncomment it, and the propercase Urls are back.

It seems to me like Microsoft knows this is buggy and doesn't advertise this new feature, as it's a really great feature but it is only mentioned in the MSDN docs.

mwijnands
  • 1,236
  • 13
  • 22

1 Answers1

12

This indeed appears to be a bug in the interaction between ASP.NET MVC and ASP.NET 4.5's new LowercaseUrls feature in routing.

I have logged a bug for MVC here: http://aspnetwebstack.codeplex.com/workitem/685

Thank you for reporting this!

As Cristi Pufu mentions, it appears that others have written some NuGet packages to handle similar scenarios:

EDIT 4/23/2013 - We have recently accepted a pull request with a fix for this issue for ASP.NET MVC 5.

Eilon
  • 25,582
  • 3
  • 84
  • 102