Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

ASP.NET Core ルートパスでindex.htmlを返す方法

ASP.NET Core で、ルートパス(デフォルトページ)が要求されたときに index.html を返却する方法を書いていきます。

※ ここでのルートパスは、下のようにスラッシュで終わる URL とします。

http://localhost:xxxx/

プロジェクトの概要

動作確認のために作成したプロジェクトは以下の通りです。

プロジェクトの作成方法は、こちら に記載しています。

目次

  1. 対応方法
  2. 対応方法の補足
  3. 起動コードの例
  4. index.html の作成
  5. 動作確認

1. 対応方法

アプリケーションのスタートアップ時に、以下のオプションを追加します。

var opt = new DefaultFilesOptions();
opt.DefaultFileNames.Clear();
opt.DefaultFileNames.Add("index.html");

var app = builder.Build();
app.UseDefaultFiles(opt);

2. 対応方法の補足

以下のコードだけ追加すると、index.html に加えて default.html など、他の HTML を返すことがあります。

app.UseDefaultFiles();

ファイルを1つに絞りたいときは、DefaultFilesOptions を使う方法が確実です。

3. 起動コードの例

スタートアップコードの例は以下の通りです。

Program.cs

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var opt = new DefaultFilesOptions();
opt.DefaultFileNames.Clear();
opt.DefaultFileNames.Add("index.html");

var app = builder.Build();
app.UseDefaultFiles(opt);
app.UseAuthorization();
app.MapControllers();
app.UseStaticFiles();
app.Run();

4. index.html の作成

動作確認ために、wwwroot フォルダに HTML を作成します。

wwwroot/index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Index Page</title>
</head>
<body>
  <p>Index Page.</p>
</body>
</html>

5. 動作確認

アプリをデバッグ実行して、以下の URL(ポート番号は可変)にアクセスします。

http://localhost:xxxx/

以下の文字列が表示されます。

Index Page.