RouteExistingFilesがどのように機能するかを理解しようとしています。そこで、新しいMVC 3インターネットプロジェクトを作成し(MVC 4は同じように動作します)、HTMLPage.htmlファイルをプロジェクトのContentフォルダーに配置しました。ここで、Global.Asaxファイルに移動し、RegisterRoutes関数を編集して、次のようにしました。
public static void RegisterRoutes(RouteCollection routes)
{
routes.RouteExistingFiles = true; //Look for routes before looking if a static file exists
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
}
「Content」コントローラーがなく、リクエストがデフォルトのパターンに確実にヒットするため、localhost:XXXX / Content/HTMLPage.htmlをリクエストするとエラーが発生するはずです。しかし、代わりにHTMLPageが表示されています。私はここで何が間違っているのですか?
更新:私はあきらめなければならないと思います。このようなルートを追加している場合でも、次のようになります。
routes.MapRoute("", "Content/{*anything}", new {controller = "Home", action = "Index"});
それでもHTMLPageのコンテンツが表示されます。〜/ Content / HTMLPageのようなURLをリクエストすると、期待どおりにインデックスページが表示されますが、.htmlや.txtのようなファイル拡張子を追加すると、コンテンツが表示されます(ファイルが存在しない場合は404エラー) 。誰かがVS2012でこれをチェックできるなら、あなたが得ている結果を私に知らせてください。ありがとうございました。