Maison > Article > développement back-end > Quelle est la différence entre IApplicationBuilder.Use() et 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);
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 Runpublic 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"); }); }
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!