Partager via


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.

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.