.NET Framework 4.5 向 RouteCollection 添加了一个新属性:
http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.lowercaseurls.aspx
这很好用,直到您将区域添加到您的项目中。所有的 Url 都是正确的。
任何想法为什么会发生这种情况?重现很简单:
- 创建新的 MVC 4 Internet 应用程序 (.NET 4.5)
- 使用以下命令启动 RouteConfig.RegisterRoutes 函数: routes.LowercaseUrls = true;
- 运行项目,你会看到所有生成的 Url 现在都是小写的。
- 在项目中添加一个区域。
- 再次运行该项目,您将看到所有 Url 再次都是正确的!
它在 context.MapRoute 在 AreaRegistration.RegisterArea 中执行时中断。当我将其注释掉时,我得到了小写的 Urls。取消注释它,正确的 Urls 又回来了。
在我看来,微软似乎知道这是错误的并且没有宣传这个新功能,因为它是一个非常棒的功能,但它只在 MSDN 文档中提到。