Maison  >  Article  >  développement back-end  >  Quelle est la différence entre IApplicationBuilder.Use() et IApplicationBuilder.Run() C# Asp.net Core ?

Quelle est la différence entre IApplicationBuilder.Use() et IApplicationBuilder.Run() C# Asp.net Core ?

WBOY
WBOYavant
2023-09-06 16:01:09774parcourir

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

Nous pouvons configurer le middleware dans la méthode Configure de la classe Startup, en utilisant Instance IApplicationBuilder.

Run() est une méthode d'extension sur une instance IApplicationBuilder qui ajoute un terminal

Ajoutez un middleware au pipeline de requêtes de votre application.

La méthode Run est une méthode d'extension de IApplicationBuilder et accepte un

Paramètres de RequestDelegate. La signature de

Méthode Run

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

La signature de RequestDelegate

public delegate Task RequestDelegate(HttpContext context);

Exemple

La traduction chinoise est :

Exemple

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

La fonction MyMiddleware ci-dessus n'est pas asynchrone et bloque donc le thread jusqu'à ce qu'il termine l'exécution. Donc, en utilisant async et Attendez pour améliorer les performances et l’évolutivité.

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

Utilisez Run() pour configurer plusieurs middlewares

Le code suivant exécutera toujours la première méthode Run et n'atteindra jamais

Méthode Second 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

Pour configurer plusieurs middlewares, utilisez la méthode d'extension Use(). C'est similaire à Run() méthode, sauf qu'elle contient le paramètre suivant pour appeler le prochain middleware Séquence

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer