.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.