Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait du livre électronique, Blazor pour les développeurs ASP NET Web Forms pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
Une application ASP.NET Core repose sur une série d’intergiciels. Middleware sont des gestionnaires agencés en pipeline pour gérer les demandes et les réponses. Dans une application Web Forms, les gestionnaires HTTP et les modules résolvent des problèmes similaires. Dans ASP.NET Core, les modules, les gestionnaires, les Global.asax.cs et le cycle de vie de l’application sont remplacés par des intergiciels. Dans ce chapitre, vous allez découvrir les intergiciels dans le contexte d’une Blazor application.
Aperçu
Le pipeline de requête ASP.NET Core est composé d’une séquence de délégués de requête, appelés l’un après l’autre. Le diagramme suivant illustre le concept. Le thread d’exécution suit les flèches noires.
Le diagramme précédent n’a pas de concept d’événements de cycle de vie. Ce concept est fondamental à la façon dont les requêtes Web Forms ASP.NET sont gérées. Ce système facilite la compréhension du processus en cours et permet l'insertion d'un intergiciel à tout moment. Middleware s’exécute dans l’ordre dans lequel il est ajouté au pipeline de requête. Ils sont également ajoutés dans le code au lieu de fichiers de configuration, généralement dans Startup.cs.
Katana
Les lecteurs familiarisés avec Katana se sentiront à l’aise dans ASP.NET Core. En fait, Katana est une infrastructure à partir de laquelle ASP.NET Core dérive. Il a introduit des modèles de middleware et de pipeline similaires pour ASP.NET 4.x. Le middleware conçu pour Katana peut être adapté pour travailler avec le pipeline ASP.NET Core.
Intergiciels courants
ASP.NET 4.x inclut de nombreux modules. De manière similaire, ASP.NET Core dispose également de nombreux composants middleware disponibles. Les modules IIS peuvent être utilisés dans certains cas avec ASP.NET Core. Dans d’autres cas, le middleware natif ASP.NET Core peut être disponible.
Le tableau suivant répertorie les intergiciels de remplacement et les composants dans ASP.NET Core.
| Module | Module ASP.NET 4.x | Option ASP.NET Core |
|---|---|---|
| Erreurs HTTP | CustomErrorModule |
Middleware Status Code Pages |
| Document par défaut | DefaultDocumentModule |
Middleware de gestion des fichiers par défaut |
| Exploration de répertoires | DirectoryListingModule |
Intergiciel de navigation d’annuaire |
| Compression dynamique | DynamicCompressionModule |
Intergiciel de compression de réponse |
| Suivi des demandes ayant échoué | FailedRequestsTracingModule |
Journalisation ASP.NET Core |
| Mise en cache des fichiers | FileCacheModule |
Middleware de mise en cache des réponses |
| Mise en cache HTTP | HttpCacheModule |
Middleware de mise en cache des réponses |
| Journalisation HTTP | HttpLoggingModule |
Journalisation ASP.NET Core |
| Redirection HTTP | HttpRedirectionModule |
Intergiciel de réécriture d’URL |
| Filtres ISAPI | IsapiFilterModule |
Intergiciel |
| ISAPI | IsapiModule |
Intergiciel |
| Filtrage des demandes | RequestFilteringModule |
Intergiciel de réécriture d’URL IRule |
| Réécriture d’URL† | RewriteModule |
Intergiciel de réécriture d’URL |
| Compression statique | StaticCompressionModule |
Intergiciel de compression de réponse |
| Contenu statique | StaticFileModule |
Intergiciel de fichiers statiques |
| Autorisation d’URL | UrlAuthorizationModule |
identité principale ASP.NET |
Cette liste n'est pas exhaustive, mais doit donner une idée de la cartographie existante entre les deux cadres. Pour obtenir une liste plus détaillée, consultez les modules IIS avec ASP.NET Core.
Intergiciel personnalisé
L’intergiciel intégré peut ne pas gérer tous les scénarios nécessaires pour une application. Dans ce cas, il est judicieux de créer votre propre intergiciel. Il existe plusieurs façons de définir le middleware, le plus simple étant un délégué simple. Examinez l’intergiciel (middleware) suivant, qui accepte une demande de culture d’une chaîne de requête :
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
var cultureQuery = context.Request.Query["culture"];
if (!string.IsNullOrWhiteSpace(cultureQuery))
{
var culture = new CultureInfo(cultureQuery);
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
}
// Call the next delegate/middleware in the pipeline
await next();
});
app.Run(async (context) =>
await context.Response.WriteAsync(
$"Hello {CultureInfo.CurrentCulture.DisplayName}"));
}
}
L’intergiciel peut également être défini en tant que classe, soit en implémentant l’interface, soit en suivant la IMiddleware convention d’intergiciel. Pour plus d’informations, consultez Écrire un intergiciel ASP.NET Core personnalisé.