Middleware: nuovo overload Use
È stato introdotto un nuovo overload di app.Use
. Se si chiama app.Use
ma non si chiama mai il middleware next
, ora si otterrà l'errore del compilatore CS0121:
La chiamata è ambigua tra i metodi o le proprietà seguenti: 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' e 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'
Per risolvere l'errore, usare app.Run
anziché app.Use
.
Per informazioni, vedere Problema di GitHub dotnet/aspnetcore#32020.
Versione introdotta
ASP.NET Core 6.0
Comportamento precedente
app.Use(async (context, next) =>
{
await next();
});
or
app.Use(async (context, next) =>
{
await SomeAsyncWork();
// next not called...
});
Nuovo comportamento
È ora possibile passare context
al next
delegato:
app.Use(async (context, next) =>
{
await next(context);
});
Usare app.Run
quando il middleware non chiama mai next
:
app.Run(async (context) =>
{
await SomeAsyncWork();
// next never called
});
Motivo della modifica
Il precedente metodo Use
alloca due oggetti per richiesta. Il nuovo overload evita queste allocazioni con una piccola modifica al modo in cui si invoca il middleware next
.
Azione consigliata
Se viene visualizzato un errore di compilazione, significa che si sta chiamando app.Use
senza usare il next
delegato. Passare a app.Run
per correggere l'errore.
API interessate
Nessuno.