Remarque
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.
Remarque
Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 10 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 10 de cet article.
WebApplication ajoute automatiquement le middleware suivant dans les applications API minimales en fonction de certaines conditions :
-
UseDeveloperExceptionPageest ajouté en premier lorsqueHostingEnvironmentest"Development". -
UseRoutingest ajouté ensuite si le code utilisateur n’a pas déjà appeléUseRoutinget s’il existe des points de terminaison configurés, par exempleapp.MapGet. -
UseEndpointsest ajouté à la fin du pipeline d’intergiciel si des points de terminaison sont configurés. -
UseAuthenticationest ajouté immédiatement aprèsUseRouting, si le code utilisateur n’a pas déjà appeléUseAuthenticationet siIAuthenticationSchemeProviderpeut être détecté dans le fournisseur de services.IAuthenticationSchemeProviderest ajouté par défaut lors de l’utilisation deAddAuthentication, et les services sont détectés à l’aide deIServiceProviderIsService. -
UseAuthorizationest ajouté après, si le code utilisateur n’a pas déjà appeléUseAuthorizationet siIAuthorizationHandlerProviderpeut être détecté dans le fournisseur de services.IAuthorizationHandlerProviderest 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
UseRoutingetUseEndpoints.
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
UseRoutingetUseEndpointspour 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 le middleware suivant dans les applications API minimales en fonction de certaines conditions :
-
UseDeveloperExceptionPageest ajouté en premier lorsqueHostingEnvironmentest"Development". -
UseRoutingest ajouté ensuite si le code utilisateur n’a pas déjà appeléUseRoutinget s’il existe des points de terminaison configurés, par exempleapp.MapGet. -
UseEndpointsest ajouté à la fin du pipeline d’intergiciel si des points de terminaison sont configurés. -
UseAuthenticationest ajouté immédiatement aprèsUseRouting, si le code utilisateur n’a pas déjà appeléUseAuthenticationet siIAuthenticationSchemeProviderpeut être détecté dans le fournisseur de services.IAuthenticationSchemeProviderest ajouté par défaut lors de l’utilisation deAddAuthentication, et les services sont détectés à l’aide deIServiceProviderIsService. -
UseAuthorizationest ajouté après, si le code utilisateur n’a pas déjà appeléUseAuthorizationet siIAuthorizationHandlerProviderpeut être détecté dans le fournisseur de services.IAuthorizationHandlerProviderest 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
UseRoutingetUseEndpoints.
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
UseRoutingetUseEndpointspour 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 la vue d’ensemble des API.