Intergiciel : surcharge de Nouvelle utilisation
Une nouvelle surcharge de app.Use
a été introduite. Si vous appelez app.Use
mais que vous n’appelez jamais l’intergiciel next
, vous obtenez maintenant l’erreur du compilateur CS0121 :
L’appel est ambigu entre les méthodes ou propriétés suivantes : 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' and 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'
Pour résoudre l’erreur, utilisez app.Run
au lieu de app.Use
.
Pour plus d’informations, consultez le problème GitHub dotnet/aspnetcore#32020.
Version introduite
ASP.NET Core 6.0
Ancien comportement
app.Use(async (context, next) =>
{
await next();
});
ou
app.Use(async (context, next) =>
{
await SomeAsyncWork();
// next not called...
});
Nouveau comportement
Vous pouvez maintenant passer context
au délégué next
:
app.Use(async (context, next) =>
{
await next(context);
});
Utilisez app.Run
quand votre intergiciel n’appelle jamais next
:
app.Run(async (context) =>
{
await SomeAsyncWork();
// next never called
});
Raison du changement
La méthode Use
précédente alloue deux objets par requête. La nouvelle surcharge évite ces allocations avec une petite modification de la façon dont vous appelez l’intergiciel next
.
Action recommandée
Si vous obtenez une erreur de compilation, cela signifie que vous appelez app.Use
sans utiliser le délégué next
. Basculez vers app.Run
pour corriger l’erreur.
API affectées
Aucun.