空のASP.NETアプリケーションがあり、index.htmlファイルを追加しました。 index.htmlをサイトのデフォルトページとして設定したい。
Index.htmlを右クリックして開始ページとして設定しようとしました。実行すると、URLはhttp://localhost:5134/index.html
しかし、私が本当に欲しいのは、次のように入力することです:http://localhost:5134
、index.htmlページをロードする必要があります。
私のルート設定:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
空のルートを無視するようにルート構成に指示を追加し、問題を解決しました。
routes.IgnoreRoute("");
@virが答えたように、routes.IgnoreRoute("");
をRegisterRoutes(RouteCollection routes)
に追加します。これはデフォルトでRouteConfig.csにあります。
メソッドは次のようになります。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
その理由は、ASP.NET MVCがURL管理を引き継ぎ、デフォルトですべての拡張子のないURLがweb.configで定義された拡張子のないUrlハンドラーによって制御されるようにルーティングが行われるためです。
詳細な説明があります こちら 。
WebアプリがIISで実行されていると仮定すると、web.configファイルでデフォルトページを指定できます。
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
新しいコントローラーDefaultControllerを作成します。インデックスアクションでは、1行のリダイレクトを記述しました。
return Redirect("~/index.html")
RouteConfig.csで、ルートのcontroller = "Default"を変更します。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);
1つの解決策は次のとおりです。
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// );
つまり、MVCプロジェクトでこのコードをコメントまたは削除して、最初のリクエストを行うときのデフォルトの動作を回避しますhttp://localhost:5134/
。
Index.htmlは、ソリューションのルートにある必要があります。
お役に立てれば!わたしにはできる。