Startup クラスの Configure メソッドでミドルウェアを構成するには、次を使用します。 IApplicationBuilder インスタンス。
Run() は IApplicationBuilder インスタンスの拡張メソッドであり、ターミナルを追加します。
ミドルウェアをアプリケーションのリクエスト パイプラインに追加します。
Run メソッドは IApplicationBuilder の拡張メソッドであり、
RequestDelegate のパラメータ。
実行メソッドのシグネチャ
public static void Run(this IApplicationBuilder app, RequestDelegate handler)
RequestDelegate シグネチャ
public delegate Task RequestDelegate(HttpContext context);
public class Startup{ public Startup(){ } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){ //configure middleware using IApplicationBuilder here.. app.Run(async (context) =>{ await context.Response.WriteAsync("Hello World!"); }); // other code removed for clarity.. } }
上記の MyMiddleware 関数は非同期ではないため、スレッドをブロックします。 実行が完了するまで。したがって、async と パフォーマンスとスケーラビリティが向上するまで待ちます。
public class Startup{ public Startup(){ } public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Run(MyMiddleware); } private async Task MyMiddleware(HttpContext context){ await context.Response.WriteAsync("Hello World! "); } }
Run() を使用した複数のミドルウェアの構成
次のコードは常に最初の Run メソッドを実行し、
に到達することはありません。 2 番目の Run メソッドpublic void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Run(async (context) =>{ await context.Response.WriteAsync("1st Middleware"); }); // the following will never be executed app.Run(async (context) =>{ await context.Response.WriteAsync(" 2nd Middleware"); }); }
複数のミドルウェアを構成するには、Use() 拡張メソッドを使用します。 Run()に似ています ただし、次のミドルウェアを呼び出すための次のパラメータが含まれている点が異なります。 シーケンス
public void Configure(IApplicationBuilder app, IHostingEnvironment env){ app.Use(async (context, next) =>{ await context.Response.WriteAsync("1st Middleware!"); await next(); }); app.Run(async (context) =>{ await context.Response.WriteAsync("2nd Middleware"); }); }
以上がIApplicationBuilder.Use() と IApplicationBuilder.Run() C# Asp.net Core の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。