中介軟體:多載的新用途
已引進新的 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
無。