Middleware: New Use přetížení
Zavedli jsme nové přetížení app.Use
. Pokud voláte app.Use
middleware, ale nikdy nevoláte next
, zobrazí se chyba kompilátoru CS0121:
Volání je nejednoznačné mezi následujícími metodami nebo vlastnostmi: UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>) a UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)
Pokud chcete tuto chybu vyřešit, použijte app.Run
místo app.Use
.
Diskuzi najdete v tématu o problému GitHubu dotnet/aspnetcore#32020.
Zavedená verze
ASP.NET Core 6.0
Staré chování
app.Use(async (context, next) =>
{
await next();
});
nebo
app.Use(async (context, next) =>
{
await SomeAsyncWork();
// next not called...
});
Nové chování
Delegáta teď můžete předat context
next
:
app.Use(async (context, next) =>
{
await next(context);
});
Použijte app.Run
, když middleware nikdy nevolá next
:
app.Run(async (context) =>
{
await SomeAsyncWork();
// next never called
});
Důvod změny
Předchozí Use
metoda přidělí dva objekty na požadavek. Nové přetížení zabrání těmto přidělením s malou změnou způsobu vyvolání middlewaru next
.
Doporučená akce
Pokud se zobrazí chyba kompilace, znamená to, že voláte app.Use
bez použití delegáta next
. Přepněte na app.Run
opravu chyby.
Ovlivněná rozhraní API
Nezaokrouhlovat.