Heim >Backend-Entwicklung >C#.Net-Tutorial >Was ist der Unterschied zwischen IApplicationBuilder.Use() und 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);
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-Methodepublic 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"); }); }
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!