5.3ミドルウェア


ミドルウェアは、アプリケーションパイプを構成してリクエストと応答を処理するためのコンポーネントです.パイプ内の各コンポーネントは、要求を次のコンポーネントに渡すかどうかを選択し、パイプで次のコンポーネントを呼び出す前と後にいくつかの操作を実行できます.リクエスト依頼はリクエストパイプを確立するために使用され、各httpリクエストの処理を依頼する.
要求依頼は、IApplicationBuilderタイプのRun、Map、およびUse拡張メソッドを使用して構成され、StartupクラスでConfigureメソッドに渡されます.
個人的な理解:ミドルウェアはhttpのようにmvcルーティングを要求し、プログラムはどのように応答するかを返し、このコードはConfigureメソッドに書かれています.
例1:ページがどんなに要求されても、Hello Worldに戻ります!
app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });

例2:runメソッドは、要求が管路内で短絡するHello World 2が実行されないようにする.
app.Run(async context =>
            {
                await context.Response.WriteAsync("Hello,World");
            });
app.Run(async context =>
            {
                await context.Response.WriteAsync("Hello,World2");//    
            });

例3:nextパラメータ継続実行要求
 loggerFactory.AddConsole(minLevel: LogLevel.Information);
            var logger = loggerFactory.CreateLogger("Middleware");
            app.Use(async (context, next) =>
            {
                logger.LogInformation("Handling request.");
                await next.Invoke();
                logger.LogInformation("Finished handling request");
            });

            app.Run(async context =>
            {
                await context.Response.WriteAsync("Hello,World");
            });

例4:,mapメソッド:mapメソッドに入力されたパラメータに基づいて要求を返す
app.Map("/maptest", HandleMapTest);//       maptest    HandleMapTest  

private void HandleMapTest(IApplicationBuilder app)
        {
            app.Run(async context =>
            {
                await context.Response.WriteAsync("map test success");
            });
        }

例5:mapwhenアドレスバーのquerystringパラメータの試用
app.MapWhen(context =>
            {
                return context.Request.Query.ContainsKey("branch");
            }, HandleBranch);
private static void HandleBranch(IApplicationBuilder app)
        {
            app.Run(async context =>
            {
                await context.Response.WriteAsync("brancb userd");
            });
        }

実戦ミドルウェアdemo、ここでダウンロードできます
ダウンロード