Asp.net-core-middleware
ASP.NET Core-ミドルウェア
この章では、ミドルウェアのセットアップ方法を理解します。 ASP.NET Coreのミドルウェアは、アプリケーションがHTTP要求に応答する方法を制御します。 また、エラーが発生したときにアプリケーションがどのように見えるかを制御することもでき、特定のアクションを実行するためにユーザーを認証および承認する方法の重要な部分です。
- ミドルウェアは、要求と応答を処理するためにアプリケーションパイプラインにアセンブルされるソフトウェアコンポーネントです。
- 各コンポーネントは、パイプラインの次のコンポーネントにリクエストを渡すかどうかを選択し、次のコンポーネントがパイプラインで呼び出される前後に特定のアクションを実行できます。
- 要求デリゲートは、要求パイプラインを構築するために使用されます。 要求デリゲートは、各HTTP要求を処理します。
- ASP.NET Coreのミドルウェアの各部分はオブジェクトであり、各部分には非常に具体的で、焦点が絞られた、限定的な役割があります。
- 最終的に、アプリケーションが適切に動作するには、多くのミドルウェアが必要です。
ここで、すべてのリクエストに関する情報をアプリケーションに記録すると仮定します。
- その場合、アプリケーションにインストールする最初のミドルウェアはロギングコンポーネントです。
- このロガーは着信リクエストに関するすべてを見ることができますが、ロガーは単に情報を記録し、このリクエストを次のミドルウェアに渡すだけです。
- ミドルウェアは、この処理パイプラインに存在する一連のコンポーネントです。
- アプリケーションにインストールした次のミドルウェアは承認者です。
- 承認者は、HTTPヘッダーで特定のCookieまたはアクセストークンを探している可能性があります。
- 承認者がトークンを見つけると、リクエストを続行できます。 そうでない場合、承認者自身がHTTPエラーコードまたはリダイレクトコードでリクエストに応答して、ユーザーをログインページに送信する可能性があります。
- しかし、そうでなければ、承認者はリクエストをルーターである次のミドルウェアに渡します。
- ルーターはURLを見て、次のアクションのステップを決定します。
- ルーターは応答するものがないかアプリケーションを探し、応答するものが見つからない場合、ルーター自体が* 404 Not Foundエラー*を返す場合があります。
例
ミドルウェアについてさらに理解するために、簡単な例を見てみましょう。 * Startupクラス*のConfigureメソッドを使用して、ASP.NETでミドルウェアをセットアップします。
- Configure()*メソッド内で、IApplicationBuilderインターフェイスの拡張メソッドを呼び出してミドルウェアを追加します。
デフォルトでは、新しい空のプロジェクトに2つのミドルウェアがあります-
- IISPlatformHandler
- app.Runに登録されたミドルウェア
IISPlatformHandler
app.Runに登録されたミドルウェア
この場合の次のミドルウェアは、 app.Run に登録されたミドルウェアです。 Runメソッドを使用すると、すべての応答を処理するために使用できる別のメソッドを渡すことができます。 Runは、頻繁に目にするものではなく、ミドルウェアのターミナルと呼ばれるものです。
Runに登録したミドルウェアは、別のミドルウェアを呼び出すことはできません。リクエストを受信するだけで、何らかの応答を生成する必要があります。
Responseオブジェクトにもアクセスできます。Responseオブジェクトでできることの1つは、文字列を書き込むことです。
app.Runの後に別のミドルウェアを登録する場合、そのミドルウェアが呼び出されることはありません。これも、Runはミドルウェアの最終的な部分だからです。 次のミドルウェアを呼び出すことはありません。
別のミドルウェアを追加する方法
別のミドルウェアを追加するには、次の手順に進みましょう-
- ステップ1 *-別のミドルウェアを追加するには、プロジェクトを右クリックして、[NuGetパッケージの管理]を選択します。
ステップ2 *-例外処理、例外表示ページ、および診断情報のために実際にASP.NET Coreミドルウェアである *Microsoft.aspnet.diagnostics を検索します。 この特定のパッケージには、使用可能なさまざまなミドルウェアが含まれています。
- ステップ3 *-パッケージがプロジェクトにインストールされていない場合はインストールします。
ステップ4 *- Configure()メソッドに移動して、 *app.UseWelcomePage ミドルウェアを呼び出します。
- ステップ5 *-アプリケーションを実行すると、次のウェルカム画面が表示されます。
このウェルカム画面はそれほど便利ではありません。
ステップ6 *-もう少し役立つかもしれない何か他のものを試してみましょう。 Welcomeページを使用する代わりに、 *RuntimeInfoPage を使用します。
ステップ7 *- *Startup.cs ページを保存してブラウザを更新すると、次のページが表示されます。
この RuntimeInfoPage は、特定のURLに着信するリクエストにのみ応答するミドルウェアです。 着信リクエストがそのURLと一致しない場合、このミドルウェアは、リクエストを次のミドルウェアにパススルーさせるだけです。 要求はIISPlatformHandlerミドルウェアを通過し、UseRuntimeInfoPageミドルウェアに移動します。 応答は作成されないため、app.Runに移動して文字列を表示します。
ステップ8 *-URLの最後に「/*runtimeinfo 」を追加します。 そのランタイム情報ページミドルウェアによって生成されるページが表示されます。
これで、オペレーティングシステム、ランタイムバージョン、アーキテクチャ、タイプ、使用しているすべてのパッケージなど、ランタイム環境に関する情報を提供する応答が表示されます。