Intergiciel dans les applications API minimales
WebApplication
ajoute automatiquement l’intergiciel suivant à Minimal API applications
en fonction de certaines conditions :
UseDeveloperExceptionPage
est ajouté en premier lorsqueHostingEnvironment
est"Development"
.UseRouting
est ajouté ensuite si le code utilisateur n’a pas déjà appeléUseRouting
et s’il existe des points de terminaison configurés, par exempleapp.MapGet
.UseEndpoints
est ajouté à la fin du pipeline d’intergiciel si des points de terminaison sont configurés.UseAuthentication
est ajouté immédiatement aprèsUseRouting
, si le code utilisateur n’a pas déjà appeléUseAuthentication
et siIAuthenticationSchemeProvider
peut être détecté dans le fournisseur de services.IAuthenticationSchemeProvider
est ajouté par défaut lors de l’utilisation deAddAuthentication
, et les services sont détectés à l’aide deIServiceProviderIsService
.UseAuthorization
est ajouté après, si le code utilisateur n’a pas déjà appeléUseAuthorization
et siIAuthorizationHandlerProvider
peut être détecté dans le fournisseur de services.IAuthorizationHandlerProvider
est ajouté par défaut lors de l’utilisation deAddAuthorization
, et les services sont détectés à l’aide deIServiceProviderIsService
.- Les intergiciels et les points de terminaison configurés par l’utilisateur sont ajoutés entre
UseRouting
etUseEndpoints
.
Le code suivant est effectivement ce qu’un intergiciel automatique ajouté à l’application produit :
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Dans certains cas, la configuration de l’intergiciel par défaut n’est pas correcte pour l’application et exige une modification. Par exemple, UseCors doit être appelé avant UseAuthentication et UseAuthorization. L’application doit appeler UseAuthentication
et UseAuthorization
, si UseCors
est appelé :
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Si l’intergiciel doit être exécuté avant l’exécution de la correspondance d’itinéraire, appeler UseRouting et placer l’intergiciel avant l’appel à UseRouting
. UseEndpoints n’est pas obligatoire dans ce cas, car il est automatiquement ajouté comme décrit précédemment :
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Lors de l’ajout d’un intergiciel de terminal :
- L’intergiciel doit être ajouté après
UseEndpoints
. - L’application doit appeler
UseRouting
etUseEndpoints
pour que l’intergiciel de terminal puisse être placé à l’emplacement approprié.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Un intergiciel de terminal est un intergiciel qui s’exécute si aucun point de terminaison ne gère la requête.
WebApplication
ajoute automatiquement l’intergiciel suivant à Minimal API applications
en fonction de certaines conditions :
UseDeveloperExceptionPage
est ajouté en premier lorsqueHostingEnvironment
est"Development"
.UseRouting
est ajouté ensuite si le code utilisateur n’a pas déjà appeléUseRouting
et s’il existe des points de terminaison configurés, par exempleapp.MapGet
.UseEndpoints
est ajouté à la fin du pipeline d’intergiciel si des points de terminaison sont configurés.UseAuthentication
est ajouté immédiatement aprèsUseRouting
, si le code utilisateur n’a pas déjà appeléUseAuthentication
et siIAuthenticationSchemeProvider
peut être détecté dans le fournisseur de services.IAuthenticationSchemeProvider
est ajouté par défaut lors de l’utilisation deAddAuthentication
, et les services sont détectés à l’aide deIServiceProviderIsService
.UseAuthorization
est ajouté après, si le code utilisateur n’a pas déjà appeléUseAuthorization
et siIAuthorizationHandlerProvider
peut être détecté dans le fournisseur de services.IAuthorizationHandlerProvider
est ajouté par défaut lors de l’utilisation deAddAuthorization
, et les services sont détectés à l’aide deIServiceProviderIsService
.- Les intergiciels et les points de terminaison configurés par l’utilisateur sont ajoutés entre
UseRouting
etUseEndpoints
.
Le code suivant est effectivement ce qu’un intergiciel automatique ajouté à l’application produit :
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Dans certains cas, la configuration de l’intergiciel par défaut n’est pas correcte pour l’application et exige une modification. Par exemple, UseCors doit être appelé avant UseAuthentication et UseAuthorization. L’application doit appeler UseAuthentication
et UseAuthorization
, si UseCors
est appelé :
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Si l’intergiciel doit être exécuté avant l’exécution de la correspondance d’itinéraire, appeler UseRouting et placer l’intergiciel avant l’appel à UseRouting
. UseEndpoints n’est pas obligatoire dans ce cas, car il est automatiquement ajouté comme décrit précédemment :
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Lors de l’ajout d’un intergiciel de terminal :
- L’intergiciel doit être ajouté après
UseEndpoints
. - L’application doit appeler
UseRouting
etUseEndpoints
pour que l’intergiciel de terminal puisse être placé à l’emplacement approprié.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Un intergiciel de terminal est un intergiciel qui s’exécute si aucun point de terminaison ne gère la requête.
Pour plus d’informations sur l’intergiciel antifalsification dans les API minimales, consultez Empêcher les attaques XSRF/CSRF (falsification de requêtes intersites) dans ASP.NET Core
Pour plus d’informations sur les intergiciels, consultez Intergiciel ASP.NET Core et la liste des intergiciels intégrés qui peuvent être ajoutés aux applications.
Pour plus d’informations sur les API minimales, consultez l’article Minimal APIs overview
.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour