Middleware: nueva sobrecarga de uso

Se ha introducido una nueva sobrecarga de app.Use. Si llama a app.Use pero nunca llama al middleware next, ahora obtendrá el error CS0121 del compilador:

La llamada es ambigua entre los métodos o propiedades siguientes: "UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)" y "UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)"

Para resolver el error, use app.Run en lugar de app.Use.

Para obtener información, vea la incidencia dotnet/aspnetcore#32020 de GitHub.

Versión introducida

ASP.NET Core 6.0

Comportamiento anterior

app.Use(async (context, next) =>
{
    await next();
});

o

app.Use(async (context, next) =>
{
    await SomeAsyncWork();
    // next not called...
});

Comportamiento nuevo

Ahora puede pasar context al delegado next:

app.Use(async (context, next) =>
{
    await next(context);
});

Use app.Run cuando el middleware nunca llame a next:

app.Run(async (context) =>
{
    await SomeAsyncWork();
    // next never called
});

Motivo del cambio

El método Use anterior asigna dos objetos por solicitud. La sobrecarga nueva evita estas asignaciones con un pequeño cambio en la forma de invocar el middleware next.

Si recibe un error de compilación, significa que está llamando a app.Use sin usar el delegado next. Cambie a app.Run para corregir el error.

API afectadas

Ninguno.