17

.NET Framework 4.5 向 RouteCollection 添加了一个新属性:

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

这很好用,直到您将区域添加到您的项目中。所有的 Url 都是正确的。

任何想法为什么会发生这种情况?重现很简单:

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

它在 context.MapRoute 在 AreaRegistration.RegisterArea 中执行时中断。当我将其注释掉时,我得到了小写的 Urls。取消注释它,正确的 Urls 又回来了。

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

4

1 回答 1

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 的此问题。

于 2012-12-06T23:22:06.367 回答