IApplicationBuilder.Use() と IApplicationBuilder.Run() C# Asp.net Core の違いは何ですか?

WBOY
リリース: 2023-09-06 16:01:09
転載
777 人が閲覧しました

IApplicationBuilder.Use() 和 IApplicationBuilder.Run() C# Asp.net Core 之间有什么区别?

Startup クラスの Configure メソッドでミドルウェアを構成するには、次を使用します。 IApplicationBuilder インスタンス。

Run() は IApplicationBuilder インスタンスの拡張メソッドであり、ターミナルを追加します。

ミドルウェアをアプリケーションのリクエスト パイプラインに追加します。

Run メソッドは IApplicationBuilder の拡張メソッドであり、

RequestDelegate のパラメータ。

実行メソッドのシグネチャ

public static void Run(this IApplicationBuilder app, RequestDelegate handler)
ログイン後にコピー

RequestDelegate シグネチャ

public delegate Task RequestDelegate(HttpContext context);
ログイン後にコピー

Example

中国語翻訳は次のとおりです:

Example

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

複数のミドルウェアを構成するには、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 サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート