ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにするコードを紹介します。

概要

こちらの記事で紹介していますが、ASP.NET Core Webアプリケーションのデフォルトの設定ではアプリケーションルート以下のすべてのURLに対して同じ処理が実行される動作になります。アプリケーションによってはアプリケーション内であらかじめ用意された静的ファイルや画像を表示したい場合があります。この記事ではASP.NET Core Webアプリケーションで静的ファイルを扱えるようにする設定を紹介します。
ASP.NET Core Webアプリケーションで静的ファイルを扱うには、Configure メソッドで UseStaticFiles() メソッドを呼び出します。また、プロジェクトに静的ファイルを配置するwwwrootフォルダを作成し、そのフォルダ内に静的ファイルを配置します。

プログラム例:最上位レベルのステートメントを使用する場合

事前準備

ASP.NET Coreアプリケーションを作成します。作成手順はこちらの記事を参照してください。

wwwrootフォルダの作成

Visual Studioを起動しプロジェクトを開きます。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像1

ソリューションエクスプローラーでプロジェクトのノードをクリックして選択します。 右クリックしポップアップメニューを表示します。 ポップアップメニューの[追加]の[新しいフォルダー]の項目をクリックします。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像2

プロジェクトの直下にフォルダが作成されます。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像3 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像4

フォルダ名を wwwroot に設定します。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像5 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像6

フォルダ名を wwwroot にするとソリューションエクスプローラーの項目のアイコンがフォルダのアイコンから地球のアイコンに変わります。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像7 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像8

作成した wwwroot フォルダに静的ファイルを追加します。今回は static.html と image.png の2ファイルを追加します。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像9 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像10

ファイルの内容は下記になります。

static.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>静的ページ</title>
</head>
<body>
    <p>静的ページですよ</p>
</body>
</html>

image.png
image.png - ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像11

コード

下記のコードを記述します。

Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.UseStaticFiles();
app.MapGet("/", () => "Hello World!");

app.Run();

解説

以下のコードにより静的ファイルが利用できるようになります。 静的ファイルのルートディレクトリが先に作成した wwwroot フォルダになります。 (アプリケーションルートのURL)/static.html にアクセスすると、wwwrootフォルダに配置した static.html にアクセスできる状態になります。

  app.UseStaticFiles();

実行結果

プロジェクトを実行します。Webブラウザが起動し下図の画面が表示されます。Webアプリケーションの処理が実行されるため、"Hello World!" のメッセージが表示されます。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像12

(アプリケーションルートのURL)/static.html にアクセスします。wwwrootフォルダに配置した static.html のページが表示されます。静的ファイルにルーティングできていることが確認できます。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像13

(アプリケーションルートのURL)/image.png にアクセスします。wwwrootフォルダに配置した image.png の画像が表示できます。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像14

ASP.NET Core Webアプリケーションで静的ファイルにアクセスできるようになりました。

プログラム例:最上位レベルのステートメントを使用しない場合

事前準備

ASP.NET Coreアプリケーションを作成します。作成手順はこちらの記事を参照してください。

wwwrootフォルダの作成

Visual Studioを起動しプロジェクトを開きます。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像15

ソリューションエクスプローラーでプロジェクトのノードをクリックして選択します。右クリックしポップアップメニューを表示します。ポップアップメニューの[追加]の[新しいフォルダー]の項目をクリックします。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像16

プロジェクトの直下にフォルダが作成されます。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像17 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像18

フォルダ名を wwwroot に設定します。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像19 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像20

フォルダ名を wwwroot にするとソリューションエクスプローラーの項目のアイコンがフォルダのアイコンから地球のアイコンに変わります。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像21 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像22

作成した wwwroot フォルダに静的ファイルを追加します。今回は static.html と image.png の2ファイルを追加します。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像23 ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像24

ファイルの内容は下記になります。

static.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>静的ページ</title>
</head>
<body>
    <p>静的ページですよ</p>
</body>
</html>

image.png
image.png - ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像25

コード

下記のコードを記述します。

startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.FileProviders;
using System.IO;

namespace StaticFileAccess
{
  public class Startup
  {
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
      if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
      }

      app.UseStaticFiles();

      app.Run(async context =>
      {
        await context.Response.WriteAsync("<div>Hello ASP.NET Core World!</div>");
      });

    }
  }
}

解説

下記のコードにより静的ファイルが利用できるようになります。静的ファイルのルートディレクトリが先に作成した wwwroot フォルダになります。(アプリケーションルートのURL)/static.html にアクセスすると、wwwrootフォルダに配置した static.html にアクセスできる状態になります。
  app.UseStaticFiles();


静的ファイルにルーティングされなかった場合は、Runメソッドが実行され、"Hello ASP.NET Core World!" のレスポンスを返します。

  app.Run(async context =>
  {
    await context.Response.WriteAsync("<div>Hello ASP.NET Core World!</div>");
  });

実行結果

プロジェクトを実行します。Webブラウザが起動し下図の画面が表示されます。Webアプリケーションの処理が実行されるため、"Hello ASP.NET Core World!" のメッセージが表示されます。
ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像26

(アプリケーションルートのURL)/static.html にアクセスします。wwwrootフォルダに配置した static.html のページが表示されます。静的ファイルにルーティングできていることが確認できます。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像27

(アプリケーションルートのURL)/image.png にアクセスします。wwwrootフォルダに配置した image.png の画像が表示できます。

ASP.NET Core WebアプリケーションでHTMLや画像などの静的ファイルを表示できるようにする:画像28

ASP.NET Core Webアプリケーションで静的ファイルにアクセスできるようになりました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2019-10-21
Copyright © 1995–2025 iPentec all rights reserverd.