使用Area时,.NET 4.5 MVC RouteCollection.LowercaseUrls中断

mwi*_*nds 17 asp.net-mvc asp.net-mvc-routing asp.net-4.5

.NET Framework 4.5添加了RouteCollection的新属性:

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

这很好用,直到你为项目添加一个区域.所有网址都是适当的.

任何想法为什么会这样?重现起来很简单:

  1. 创建新的MVC 4 Internet应用程序(.NET 4.5)
  2. 使用:routes.LowercaseUrls = true启动RouteConfig.RegisterRoutes函数;
  3. 运行该项目,您将看到所有生成的Url现在都是小写的.
  4. 向项目添加区域.
  5. 再次运行该项目,您将再次看到所有Urls都是正确的!

它在context.MapRoute在AreaRegistration.RegisterArea中执行时中断.当我发表评论时,我得到了小写的Urls.取消注释,Urls又回来了.

在我看来,微软知道这是错误的,并没有宣传这个新功能,因为它是一个非常好的功能,但它只在MSDN文档中提到.

Eil*_*lon 12

这确实是ASP.NET MVC和ASP.NET 4.5在路由中的新LowercaseUrls功能之间的交互中的一个错误.

我在这里记录了MVC的一个错误:http://aspnetwebstack.codeplex.com/workitem/685

感谢您举报此内容!

正如Cristi Pufu所提到的,似乎其他人已经编写了一些NuGet包以处理类似的情况:

编辑 4/23/2013 - 我们最近接受了一个pull请求,修复了ASP.NET MVC 5的这个问题.

  • 为什么不在MVC 4上推出它 (2认同)