奇妙な質問があります。のように、拡張機能なしで実行するようにセットアップされた MVC コードに取り組んでい/Home/Index?id=10
ます/Home.mvc/Index?id=10
。
両方のルートが機能することを望みます。global.asax.cs ファイルで、次のコードを作成しました。
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("Default2",
"{controller}.mvc/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
これはほとんどうまくいきました!しかし残念なことに、コントローラーが RedirectToAction を返すと、生成された URL が失敗します。
次のように RedirectToAction を呼び出します。
return RedirectToAction("Index", "Account");
そして、これを返します:
/Account.mvc
現在は Index が想定されているため、それが欠落している心配はありません。ただし、/
その URL の末尾には何もないため、404 エラーが返されます。を追加すると正常に/
動作します。MVC が URL を正しく生成できるようにする方法はありますか、またはルートを変更してこの URL を認識させる方法はありますか?
背景: Web サーバーを IIS 7.5 にアップグレードした後、拡張子のない URL を使用するようにアプリケーションを変換し始めたため、この状況に陥っています。外の世界と共有されていたアプリケーションへのリンクがたくさんあることに気がつきませんでした.拡張子なしに変更すると、それらのリンクがすべて壊れてしまいました. どっ!一人で十分に残すべきだった。