Partie 3 - Asp - Net Core Middleware
Partie 3 - Asp - Net Core Middleware
1 Introduction
2 Exemple
Run
Use
Map
MapWhen
3 Middleware personnalisé
ASP.NET Core
Middleware
Traduit souvent en français en Intergiciel.
Composant = { classes C# }
H I ©
EL
OU
Ayant accès aux objets de type Request et Response.
M
f E
Pouvant appelé le middlewareL suivant dans le pipeline (désigné
souvent par un dh e
r é nommé next).
célégu
Pouvant©
A
s’exécuter avant et/ou après le middleware suivant dans
le pipeline.
Configurable avec trois extensions : Run, Use ou Map.
ASP.NET Core
H I ©
U EL
O
f E LM
ch r e
©A
ASP.NET Core
ASP.NET Core
app.Run();
ASP.NET Core
app.Run();
ASP.NET Core
app.Run();
ASP.NET Core
app.Run();
ASP.NET Core
Explication
ASP.NET Core
Définissons deux middlewares
app.Run();
ASP.NET Core
Définissons deux middlewares
app.Run();
ASP.NET Core
Explication
ASP.NET Core
Modifions le premier middleware
app.Run();
ASP.NET Core
Modifions le premier middleware
app.Run();
ASP.NET Core
next.Invoke() peut être remplacé par le raccourci next()
app.Run();
ASP.NET Core
next.Invoke() peut être remplacé par le raccourci next()
app.Run();
});
app.Run();
});
app.Run();
Relancez le projet et vérifier que Hello World! 1Hello World! 2Hello World! 3
s’affiche.
ASP.NET Core
Map permet
ASP.NET Core
Définissons un middleware qui s’exécute lorsque le chemin demandé est check
app.Map("/check", Check);
app.Run();
Java
Requête Réponse
ASP.NET Core
app.Run();
ASP.NET Core
N’oublions pas de définir CheckNom et CheckPrenom
Java
Requête Réponse
ASP.NET Core
Map permet
ASP.NET Core
app.Run();
Java
Requête Réponse
ASP.NET Core
Middleware personnalisé
Classe C#
ASP.NET Core
Middleware personnalisé
Classe C#
ASP.NET Core
Créons un middleware
Faire un clic droit sur le projet
Aller dans Ajouter > Nouvel élément...
Choisir C# dans Tous les langages
Chercher puis sélectionner Classe d’intergiciel
(middleware)
Saisir MonMiddleware dans Nom
Valider
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
namespace CoursMiddleware
{
public class MonMiddleware
{
private readonly RequestDelegate _next;
return _next(httpContext);
}
}
// Extension method used to add the middleware to the HTTP request pipeline.
public static class MonMiddlewareExtensions
{
public static IApplicationBuilder UseMonMiddleware(this IApplicationBuilder
builder)
{
return builder.UseMiddleware<MonMiddleware>();
}
}
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
namespace CoursMiddleware
{
public class MonMiddleware
{
private readonly RequestDelegate _next;
// Extension method used to add the middleware to the HTTP request pipeline.
public static class MonMiddlewareExtensions
{
public static IApplicationBuilder UseMonMiddleware(this IApplicationBuilder
builder)
{
return builder.UseMiddleware<MonMiddleware>();
}
}
}
ASP.NET Core
Ajoutons deux messages à la réponse avant et après next
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
namespace CoursMiddleware
{
public class MonMiddleware
{
private readonly RequestDelegate _next;
// Extension method used to add the middleware to the HTTP request pipeline.
// Le code précédent reste inchangé
}
ASP.NET Core
Utilisons MonMiddleware dans Program.cs
using CoursMiddleware;
app.UseMonMiddleware();
app.Run();
ASP.NET Core
Utilisons MonMiddleware dans Program.cs
using CoursMiddleware;
app.UseMonMiddleware();
app.Run();
Relancez le projet et vérifier que Hello World! 1Avant next de MonMiddlewareHello World! 2Après
next de MonMiddlewareHello World! 3 s’affiche.
Nous pouvons aussi ajouter un deuxième paramètre au constructeur qui sera injecté par ASP.NET
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
namespace CoursMiddleware
{
public class MonMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger _logger;
_logger = logFactory.CreateLogger("MonMiddleware");
}
// Extension method used to add the middleware to the HTTP request pipeline.
// Le code précédent reste inchangé
}
using CoursMiddleware;
app.UseMonMiddleware();
app.Run();
using CoursMiddleware;
app.UseMonMiddleware();
app.Run();
ASP.NET Core
I ©
Hsts (HTTP Strict Transport Security) : améliore la sécurité en ajoutant un
H
en-tête de réponse spécial (Strict-Transport-Security).
UEL
O
LM
HttpsRedirection : Redirige toutes les requêtes HTTP vers HTTPS.
r e f E
Routing : Contrôle les routes de requête.
ch
©A
Cors : Configure le partage des ressources cross-origin (CORS).
...
ASP.NET Core