Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen IApplicationBuilder.Use() und IApplicationBuilder.Run() C# Asp.net Core?

Was ist der Unterschied zwischen IApplicationBuilder.Use() und IApplicationBuilder.Run() C# Asp.net Core?

WBOY
WBOYnach vorne
2023-09-06 16:01:09776Durchsuche

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

Wir können die Middleware in der Methode „Configure“ der Klasse „Startup“ konfigurieren IApplicationBuilder-Instanz.

Run() ist eine Erweiterungsmethode für eine IApplicationBuilder-Instanz, die ein Terminal hinzufügt

Fügen Sie Middleware zur Anforderungspipeline Ihrer Anwendung hinzu.

Run-Methode ist eine Erweiterungsmethode von IApplicationBuilder und akzeptiert a

Parameter von RequestDelegate. Die Signatur der

Run-Methode

public static void Run(this IApplicationBuilder app, RequestDelegate handler)

Die Signatur von RequestDelegate

public delegate Task RequestDelegate(HttpContext context);

Example

Die chinesische Übersetzung lautet:

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..
   }
}

Die obige MyMiddleware-Funktion ist nicht asynchron und blockiert daher den Thread bis die Ausführung abgeschlossen ist. Also durch die Verwendung von async und Warten Sie, bis sich Leistung und Skalierbarkeit verbessern.

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! ");
   }
}

Verwenden Sie Run(), um mehrere Middlewares zu konfigurieren

Der folgende Code führt immer die erste Run-Methode aus und erreicht nie

Zweite Run-Methode
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

Um mehrere Middlewares zu konfigurieren, verwenden Sie die Erweiterungsmethode Use(). Es ähnelt Run() Methode, außer dass sie den nächsten Parameter zum Aufrufen der nächsten Middleware enthält Reihenfolge

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");
   });
}

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen IApplicationBuilder.Use() und IApplicationBuilder.Run() C# Asp.net Core?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen