Maison  >  Article  >  développement back-end  >  Comment configurer le middleware dans le didacticiel d'exemple de base asp.net

Comment configurer le middleware dans le didacticiel d'exemple de base asp.net

零下一度
零下一度original
2017-06-16 10:04:231685parcourir

Asp.Net Core-Middleware

Dans ce chapitre, nous apprendrons comment configurer un middleware. La technologie middleware dans ASP.NET Core contrôle la manière dont nos applications répondent aux requêtes HTTP. Il peut également contrôler les erreurs d’exception des applications, ce qui est essentiel dans la manière dont les utilisateurs sont authentifiés et autorisés à effectuer des actions spécifiques.

  • Le middleware est un composant logiciel assemblé dans le pipeline d'une application pour gérer les demandes et les réponses.

  • Chaque composant peut choisir s'il souhaite transmettre la requête au composant suivant dans le pipeline et peut effectuer certaines actions avant et après les tâches du pipeline.

  • Le délégué Request est utilisé pour créer le pipeline de requêtes. Le délégué Request est utilisé pour gérer chaque requête HTTP.

  • Chaque élément de middleware dans ASP.NET Core est un objet, et chaque élément a un rôle très spécifique, ciblé et limité.

  • Au final, nous avons besoin de beaucoup de middleware pour fournir un comportement approprié à l'application.

Supposons maintenant que nous souhaitions enregistrer chaque demande dans notre application.

  • Dans ce cas, le premier middleware que nous installons dans l'application est un composant de journalisation.

  • Cet enregistreur peut voir toutes les demandes entrantes, puis le middleware enregistre simplement certaines informations, puis transmet la demande au middleware de bloc suivant.

  • Le middleware apparaît comme une série de composants dans ce pipeline de traitement.

  • Le prochain middleware que nous installons dans notre application est un composant d'autorisation.

  • Un composant peut rechercher un cookie spécifique ou accéder à un jeton dans l'en-tête HTTP.

  • Si le composant d'autorisation trouve un jeton, il permet à la demande de continuer.

  • Sinon, le composant d'autorisation lui-même peut répondre à la demande avec un code d'erreur HTTP ou rediriger l'utilisateur vers la page de connexion.

  • Sinon, le composant d'autorisation transmet la requête au middleware du routeur suivant.

  • Un routeur examine l'URL et détermine l'action suivante.

  • Le routeur envoie des réponses. Si le routeur ne trouve aucune réponse, le routeur lui-même peut renvoyer une erreur 404 Not Found.


Cas

Comprenons maintenant davantage le middleware à travers un exemple simple. Nous configurons le composant middleware en utilisant la méthode Configure de notre classe de démarrage.


using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.AspNet.Http; 
using Microsoft.Extensions.DependencyInjection; 
using Microsoft.Extensions.Configuration;  
namespace FirstAppDemo { 
   public class Startup { 
      public Startup() { 
         var builder = new ConfigurationBuilder() 
            .AddJsonFile("AppSettings.json"); 
         Configuration = builder.Build(); 
      }  
      public IConfiguration Configuration { get; set; }  
        
      // This method gets called by the runtime. 
      // Use this method to add services to the container. 
      // For more information on how to configure your application, 
      // visit http://go.microsoft.com/fwlink/?LinkID=398940 
      public void ConfigureServices(IServiceCollection services) { 
      }  
       
      // This method gets called by the runtime.  
      // Use this method to configure the HTTP request pipeline. 
      public void Configure(IApplicationBuilder app) { 
         app.UseIISPlatformHandler();  
          
         app.Run(async (context) => { 
            var msg = Configuration["message"]; 
            await context.Response.WriteAsync(msg); 
         });  
      }  
      // Entry point for the application. 
      public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
   } 
}
Configure()方法内,我们将调用IApplicationBuilder接口的扩展方法来添加中间件。

Par défaut, dans un nouveau projet vide, il y a deux éléments de middleware -

  • IISPlatformHandler

  • Middleware enregistré avec app.Run


IISPlatformHandler

IISPlatformHandler nous permet d'utiliser l'authentification Windows. Il examinera chaque demande entrante pour voir s'il existe des demandes liées à l'identité Windows, puis appellera le middleware de bloc suivant.

Middleware enregistré avec app.Run

Dans ce cas, un middleware est enregistré avec app.Run. La méthode Run nous permet de transmettre une autre méthode que nous pouvons utiliser pour gérer chaque réponse. La méthode Run n'est pas quelque chose que vous voyez souvent. Nous pouvons l'appeler un terminal middleware.

Le middleware que vous enregistrez pour exécuter n'aura jamais la possibilité d'appeler un autre middleware. La seule chose qu'il peut faire est de recevoir la demande et de produire une sorte de réponse.

Vous avez également accès à un objet de réponse et vous pouvez ajouter des chaînes à l'objet de réponse.

Si vous souhaitez enregistrer un autre middleware après app.Run, ce middleware ne sera jamais appelé, car la méthode Run est le terminal d'un middleware. Il n’appelle pas le prochain bloc middleware.

Comment ajouter un middleware

Procédons aux étapes suivantes pour ajouter un autre middleware −

Étape 1− Faites un clic droit sur le projet et sélectionnez Gérer les packages NuGet.

Étape 2− Recherchez Microsoft.aspnet.diagnostics, ce package particulier contient de nombreux types différents de middleware que nous pouvons utiliser.

Étape 3− Si le package n'est pas installé dans votre projet, choisissez de l'installer.

Étape 4− Appelons maintenant le middleware app.UseWelcomePage dans la méthode Configure().


// This method gets called by the runtime.  
// Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { 
   app.UseIISPlatformHandler(); 
   app.UseWelcomePage();  
    
   app.Run(async (context) => { 
      var msg = Configuration["message"]; 
      await context.Response.WriteAsync(msg); 
   });

Étape 5 - Exécutez votre application et vous verrez l'écran de bienvenue suivant.

Cet écran de bienvenue n'est peut-être pas très utile.

Étape 6− Essayons autre chose, qui pourrait être plus utile, au lieu d'utiliser la page d'accueil, nous utiliserons la RuntimeInfoPage.


 1 // This method gets called by the runtime.  
 2 // Use this method to configure the HTTP request pipeline.  3 public void Configure(IApplicationBuilder app) { 
 4    app.UseIISPlatformHandler(); 
 5    app.UseRuntimeInfoPage();  
 6      7    app.Run(async (context) => { 
 8       var msg = Configuration["message"]; 
 9       await context.Response.WriteAsync(msg); 
10    });  
11 }

Étape 7 - Enregistrez votre page Startup.cs et actualisez votre navigateur, vous verrez la page ci-dessous.

Cette RuntimeInfoPage est un middleware qui répondra uniquement aux demandes d'une URL spécifique. Si la requête entrante ne correspond pas à l'URL, ce middleware transmet simplement la requête au middleware suivant. La requête passera par le middleware IISPlatformHandler puis ira au middleware UseRuntimeInfoPage. Cela ne crée pas de réponse, donc cela va à notre application. Exécutez et affichez la chaîne.

Étape 8− Nous ajoutons « runtimeinfo » à la fin de l'URL. Maintenant, vous verrez une page qui est une page d'informations d'exécution par middleware.

Vous verrez une page de retour, qui vous montre des informations sur votre environnement d'exécution, telles que le système d'exploitation, la version d'exécution, la structure, le type et ce que vous exécutez. Informations sur tous les packages utilisés.

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:
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