中介軟體:多載的新用途

已引進新的 app.Use 多載。 如果您呼叫 app.Use,但從未呼叫 next 中介軟體,您現在會收到編譯器錯誤 CS0121:

呼叫在下列方法或屬性之間是不明確的:'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' 和 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'

若要解決錯誤,請使用 app.Run,而非 app.Use

若要查看討論內容,請參閱 GitHub 問題 dotnet/aspnetcore#32020

導入的版本

ASP.NET Core 6.0

舊的行為

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

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

新的行為

您現在可以將 context 傳遞至 next 委派:

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

當您的中介軟體不曾呼叫 app.Run 時使用 next

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

變更原因

先前的 Use 方法會為每個要求配置兩個物件。 新的多載會避免這些配置,並稍微變更您叫用 next 中介軟體的方式。

如果您收到編譯錯誤,表示您要呼叫 app.Use,但不使用 next 委派。 請切換至 app.Run 以修正錯誤。

受影響的 API

無。