Asp.net-core-static-files
ASP.NET Core-静的ファイル
この章では、ファイルの操作方法を学びます。 ほとんどすべてのWebアプリケーションが必要とする重要な機能は、ファイルシステムからファイル(静的ファイル)を提供する機能です。
- ファイルシステムにあるJavaScriptファイル、画像、CSSファイルなどの静的ファイルは、ASP.NET Coreアプリケーションがクライアントに直接提供できるアセットです。
- 通常、静的ファイルはWebルート(wwwroot)フォルダーにあります。
- デフォルトでは、ファイルシステムから直接ファイルを提供できる唯一の場所です。
例
アプリケーションでこれらのファイルを提供する方法を理解する簡単な例を見てみましょう。
ここでは、単純なHTMLファイルをFirstAppDemoアプリケーションに追加し、このHTMLファイルをWebルート(wwwroot)フォルダーに移動する必要があります。 ソリューションエクスプローラーでwwwrootフォルダーを右クリックし、[追加]→[新しいアイテム]を選択します。
中央のペインで、* HTMLページ*を選択して indexl と呼び、*追加*ボタンをクリックします。
シンプルな* indexl *ファイルが表示されます。 以下に示すように、いくつかの簡単なテキストとタイトルを追加しましょう。
アプリケーションを実行してブラウザーで indexl に移動すると、アプリケーションには現在何もないため、 app.Run ミドルウェアが例外をスローすることがわかります。
提供するファイルシステム上のファイルを検索するミドルウェアはありません。 この問題を解決するには、ソリューションエクスプローラーでプロジェクトを右クリックし、[NuGetパッケージの管理]を選択して、* NuGetパッケージマネージャー*に移動します。
静的ファイルミドルウェアを見つける Microsoft.AspNet.StaticFiles を検索します。 このnugetパッケージをインストールして、Configureメソッド内にミドルウェアを登録するために使用できる追加のメソッドが必要になります。
次のプログラムに示すように、Configureメソッドに UseStaticFiles を追加します。
オプションをオーバーライドして、いくつかの異なる構成パラメーターを渡さない限り、静的ファイルが行うことは、特定の要求に対して*要求パス*を調べることです。 この要求パスは、ファイルシステムおよびファイルシステム上にあるものと比較されます。
静的ファイルが使用できるファイルを見つけた場合、静的ファイルはそのファイルを提供し、次のミドルウェアを呼び出しません。
一致するファイルが見つからない場合は、次のミドルウェアを続行します。
indexlファイルが表示されます。 wwwrootの内部のどこにでも、JavaScriptファイル、CSSファイル、またはHTMLファイルを置くと、それらを提供できます。
- indexlをデフォルトファイルにしたい場合、これはIISが常に備えていた機能です。
- IISには、検索するデフォルトファイルのリストをいつでも指定できます。 誰かがディレクトリのルート、この場合はWebサイトのルートに到達した場合、IISがindexlという名前の何かを見つけた場合、そのファイルを自動的に提供します。
- いくつかの変更を行うことから始めましょう。 最初に、強制エラーを削除してから、別のミドルウェア、UseDefaultFilesを追加する必要があります。 以下は、Configureメソッドの実装です。
このミドルウェアは、着信要求を調べて、それがディレクトリのルート用であるかどうか、および一致するデフォルトファイルがあるかどうかを確認します。
このミドルウェアのオプションをオーバーライドして、検索するデフォルトファイルを指定できますが、Indexlはデフォルトでデフォルトファイルの1つです。
indexlがデフォルトのファイルであることを確認できます。 UseStaticFilesの後にUseDefaultFilesがある場合、同じ結果が得られないため、ミドルウェアをインストールする順序は重要です。
UseDefaultFilesとUseStaticFilesを使用する場合は、Microsoft.aspnet.staticfiles、NuGetパッケージ、および* FileServerミドルウェア*内にある別のミドルウェアも必要になる場合があります。 これには基本的に、デフォルトファイルと静的ファイルが正しい順序で含まれています。