.NET 4.5 MVC RouteCollection.LowercaseUrls ломается при использовании Area

Новое свойство RouteCollection было добавлено .NET Framework 4.5:

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

Это отлично работает, пока вы не добавите область в свой проект. Все URL-адреса снова являются правильными.

Любые идеи, почему это происходит? Это легко воспроизвести:

  • Создайте новое интернет-приложение MVC 4 (.NET 4.5)
  • Запустите функцию RouteConfig.RegisterRoutes с помощью: routes.LowercaseUrls = true;
  • Запустите проект, и вы увидите, что все сгенерированные Urls теперь имеют строчные буквы.
  • Добавить область в проект.
  • Запустите проект еще раз, и вы увидите, что все URL-адреса снова являются правильными!

Он ломается в точке, где context.MapRoute выполняется в AreaRegistration.RegisterArea. Когда я это прокомментирую, я получил строчные буквы. Раскомментируйте его и верните URL-адреса.

Мне кажется, что Microsoft знает, что это ошибка, и не рекламирует эту новую функцию, поскольку это действительно замечательная функция, но она упоминается только в документах MSDN.

Ответ 1

Это действительно является ошибкой в ​​взаимодействии между ASP.NET MVC и ASP.NET 4.5 новой функцией LowercaseUrls в маршрутизации.

Я зарегистрировал ошибку для MVC здесь: http://aspnetwebstack.codeplex.com/workitem/685

Спасибо, что сообщили об этом!

Как упоминает Кристи Пуфу, похоже, что другие написали несколько пакетов NuGet для обработки похожих сценариев:

EDIT 4/23/2013 - Недавно мы приняли запрос на перенос с исправлением этой проблемы для ASP.NET MVC 5.