2020-01-07 更新

静的ファイルの参照(Static File)

ASP.NET Core 2.0 で静的(Static)なコンテンツファイルを参照する方法についてです。

静的ファイルを参照したい場合、StartupクラスのConfigure()にコードを追加する必要があります。

目次

  • ディレクトリ・ファイルの構成
  • デフォルトの参照
  • 参照先するディレクトリの指定
  • 備考
  • 参考リンク

ディレクトリ・ファイルの構成

今回テストするディレクトリとファイルの構成は以下の通りです。

project
├── Startup.cs
├── wwwroot
│  └── images
│     └── hoge.png
└── resource
    └── images
       └── foo.png

デフォルトの参照

一番簡単な方法として静的コンテンツファイルの参照先がデフォルトのままでいい場合、Startup.csで「app.UseStaticFiles()」を呼び出します。


public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseStaticFiles();
    }
}

上記のコードを追加するだけでデフォルトの参照先である「wwwroot」ディレクトリ配下のファイルにアクセスが可能になり、「hoge.png」にアクセスする際のURLは以下のようになります。

http://localhost:*****/images/hoge.png

参照先するディレクトリの指定

「wwwroot」以外に参照先を指定する場合は以下のようにします。


public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseStaticFiles(new StaticFileOptions()
        {
            FileProvider = new PhysicalFileProvider(
                Path.Combine(Directory.GetCurrentDirectory(), @"resource")),
            RequestPath = new PathString("/StaticFiles")
        });
    }
}

上記のコードでは静的ファイルの参照ディレクトリとして「resourse」を指定しておき、そのディレクトリにアクセスする際のリクエストのURLとして「StaticFiles」を設定しています。

よって、静的ファイル「foo.png」にアクセスするURLは以下のようになります。

http://localhost:*****/StaticFiles/images/foo.png

app.UseStaticFiles()を複数呼び出して、参照可能なディレクトリを複数用意することも可能です。

備考

静的コンテンツファイルにアクセス権を設定したい場合は、コントローラーを通して提供するようにします。

セキュリティ上の理由からデフォルトで無効になっている指定されたディレクトリ内のディレクトリとファイルのリストを参照するには、app.UseDirectoryBrowser()をメソッドを呼び出します。

参考リンク

ASP.NET Core】関連記事