IApplicationBuilder.Use() 與 IApplicationBuilder.Run() C# Asp.net Core 有什麼不同?

WBOY
發布: 2023-09-06 16:01:09
轉載
747 人瀏覽過

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

我們可以在Startup類別的Configure方法中設定中間件,使用 IApplicationBuilder實例。

Run()是IApplicationBuilder實例上的擴充方法,它加入了一個終端

將中間件加入應用程式的請求管道。

Run方法是IApplicationBuilder的擴充方法,並接受一個

RequestDelegate的參數。

Run方法的簽章##

public static void Run(this IApplicationBuilder app, RequestDelegate handler)
登入後複製

RequestDelegate的簽章

public delegate Task RequestDelegate(HttpContext context);
登入後複製

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方法,並且永遠不會到達

第二個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中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!