Middleware: Neue Use-Überladung
Eine neue Überladung app.Use
von wurde eingeführt. Wenn Sie app.Use
aufrufen, aber nie next
Middelware aufrufen, erhalten Sie nun den Compilerfehler CS0121:
Der Aufruf ist zwischen den folgenden Methoden oder Eigenschaften mehrdeutig: 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' und 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'
Verwenden Sie app.Run
statt app.Use
, um den Fehler zu beheben.
Weitere Informationen finden Sie im GitHub-Issue dotnet/aspnetcore#32020.
Eingeführt in Version
ASP.NET Core 6.0
Altes Verhalten
app.Use(async (context, next) =>
{
await next();
});
oder
app.Use(async (context, next) =>
{
await SomeAsyncWork();
// next not called...
});
Neues Verhalten
Sie können nun an context
den Delegaten next
übergeben:
app.Use(async (context, next) =>
{
await next(context);
});
Verwenden Sie app.Run
, wenn Ihre Middleware nie next
aufruft:
app.Run(async (context) =>
{
await SomeAsyncWork();
// next never called
});
Grund für die Änderung
Die vorherige Use
Methode ordnet zwei Objekte pro Anforderung zu. Die neue Überladung vermeidet diese Zuordnungen mit einer kleinen Änderung an der Art und Weise, wie Sie die next
Middleware aufrufen.
Empfohlene Maßnahme
Wenn Sie einen Kompilierungsfehler erhalten, bedeutet dies, dass Sie app.Use
aufrufen, ohne den Delegaten zu next
verwenden. Wechseln Sie zu app.Run
, um den Fehler zu beheben.
Betroffene APIs
Keine.