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

时间:2012-11-07 13:45:01

标签: 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. 启动RouteConfig.RegisterRoutes函数:routes.LowercaseUrls = true;
  3. 运行该项目,您将看到所有生成的Url现在都是小写的。
  4. 向项目添加区域。
  5. 再次运行该项目,您将再次看到所有Url的内容!
  6. 在AreaRegistration.RegisterArea中执行context.MapRoute时,它会中断。当我发表评论时,我得到了小写的Urls。取消注释,Urls又回来了。

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

1 个答案:

答案 0 :(得分:12)

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

我在此处记录了MVC的错误:http://aspnetwebstack.codeplex.com/workitem/685

感谢您报告此事!

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

编辑 2013年4月23日 - 我们最近接受了一个拉取请求,修复了ASP.NET MVC 5的此问题。