Quelle est l'utilisation de l'extension « Map » lors de l'ajout d'un middleware à un pipeline C# ASP.NET Core ?

王林
Libérer: 2023-09-13 21:13:06
avant
984 Les gens l'ont consulté

向 C# ASP.NET Core 管道添加中间件时,“Map”扩展有什么用?

Le middleware est un composant logiciel assemblé dans un pipeline d'applications Gérer les demandes et les réponses.

Chaque composant choisit de transmettre ou non la demande au composant suivant pipeline et peut effectuer certaines opérations avant et après le composant suivant Appelé dans le pipeline.

Les extensions de carte sont utilisées comme conventions pour les branches de pipeline.

La méthode d'extension de carte est utilisée pour faire correspondre les délégués de la demande en fonction du délégué demandé. path.Map accepte simplement un chemin et une fonction pour configurer le middleware individuel pipeline.

Dans l'exemple ci-dessous, toute requête avec le chemin de base /maptest sera traitée Via le pipeline configuré dans la méthode HandleMapTest.

Exemple

private static void HandleMapTest(IApplicationBuilder app){
   app.Run(async context =>{
      await context.Response.WriteAsync("Map Test Successful");
   });
}
public void ConfigureMapping(IApplicationBuilder app){
   app.Map("/maptest", HandleMapTest);
}
Copier après la connexion

En plus du mappage basé sur le chemin, la méthode MapWhen prend également en charge le mappage basé sur les prédicats.

Forking de middleware qui permet de créer des pipelines séparés avec une grande flexibilité fashion.

Tout prédicat de type Func Nouvelle branche de pipeline.

private static void HandleBranch(IApplicationBuilder app){
   app.Run(async context =>{
      await context.Response.WriteAsync("Branch used.");
   });
}
public void ConfigureMapWhen(IApplicationBuilder app){
   app.MapWhen(context => {
      return context.Request.Query.ContainsKey("branch");
   }, HandleBranch);
      app.Run(async context =>{
         await context.Response.WriteAsync("Hello from " + _environment);
   });
}
Copier après la connexion

La carte peut également être imbriquée

app.Map("/level1", level1App => {
   level1App.Map("/level2a", level2AApp => {
      // "/level1/level2a"
      //...
   });
   level1App.Map("/level2b", level2BApp => {
      // "/level1/level2b"
      //...
   });
});
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!