Intergiciel dans les applications API minimales
Remarque
Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 9 de cet article.
Avertissement
Cette version d’ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la stratégie de support .NET et .NET Core. Pour la version actuelle, consultez la version .NET 9 de cet article.
Important
Ces informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.
Pour la version actuelle, consultez la version .NET 9 de cet article.
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
.