Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
A new overload of app.Use has been introduced. If you call app.Use but never call the next middleware, you'll now get compiler error CS0121:
The call is ambiguous between the following methods or properties: 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' and 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'
To resolve the error, use app.Run instead of app.Use.
For discussion, see GitHub issue dotnet/aspnetcore#32020.
Version introduced
ASP.NET Core 6.0
Old behavior
app.Use(async (context, next) =>
{
await next();
});
or
app.Use(async (context, next) =>
{
await SomeAsyncWork();
// next not called...
});
New behavior
You can now pass context to the next delegate:
app.Use(async (context, next) =>
{
await next(context);
});
Use app.Run when your middleware never calls next:
app.Run(async (context) =>
{
await SomeAsyncWork();
// next never called
});
Reason for change
The previous Use method allocates two objects per request. The new overload avoids these allocations with a small change to how you invoke the next middleware.
Recommended action
If you get a compile error, it means you are calling app.Use without using the next delegate. Switch to app.Run to fix the error.
Affected APIs
None.