【问题标题】:.NET 4.5 MVC RouteCollection.LowercaseUrls breaks when using Area.NET 4.5 MVC RouteCollection.LowercaseUrls 在使用区域时中断
【发布时间】:2012-10-27 14:05:53
【问题描述】:

在 .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 文档中提到。

【问题讨论】:

  • 我也遇到了同样的问题,得出的结论是,如果您想要小写 URL,请不要使用区域(直到修复出现!)。
  • 你可以看看这个:nuget.org/packages/LowercaseRoutesMVC

标签: asp.net-mvc asp.net-mvc-routing asp.net-4.5


【解决方案1】:

这确实似乎是 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 的此问题的修复。

【讨论】:

  • 为什么不在 MVC 4 上推出它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
相关资源
最近更新 更多