17

RouteCollection への新しいプロパティが .NET Framework 4.5 で追加されました。

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

プロジェクトにエリアを追加するまで、これはうまく機能します。すべての URL は再びプロパーケースです。

なぜこれが起こるのですか?再現するのは簡単です:

  1. 新しい MVC 4 インターネット アプリケーション (.NET 4.5) を作成する
  2. RouteConfig.RegisterRoutes 関数を次のように開始します。routes.LowercaseUrls = true;
  3. プロジェクトを実行すると、生成されたすべての URL が小文字になっていることがわかります。
  4. プロジェクトにエリアを追加します。
  5. プロジェクトを再度実行すると、すべての URL が再び適切なケースになっていることがわかります。

AreaRegistration.RegisterArea で context.MapRoute が実行されるポイントで中断します。それをコメントアウトすると、小文字の URL が表示されました。コメントを外すと、適切な URL が返されます。

Microsoft はこれがバグであることを認識しており、この新機能を宣伝していないように思えます。これは非常に優れた機能ですが、MSDN ドキュメントでのみ言及されているためです。

4

1 に答える 1

12

これは確かに、ASP.NETMVCとASP.NET4.5のルーティングにおける新しいLowercaseUrls機能との間の相互作用のバグのようです。

ここにMVCのバグを記録しました:http://aspnetwebstack.codeplex.com/workitem/685

これを報告していただきありがとうございます!

Cristi Pufuが言及しているように、他の人が同様のシナリオを処理するためにいくつかのNuGetパッケージを作成したようです。

2013年4月23日編集-ASP.NETMVC5のこの問題を修正した、プルリクエストを最近受け入れました。

于 2012-12-06T23:22:06.367 に答える