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 メソッドは、要求ごとに 2 つのオブジェクトを割り当てます。 新しいオーバーロードにより、これらの割り当てが回避され、 next ミドルウェアを呼び出す方法が少し変わります。
推奨されるアクション
コンパイル エラーが発生した場合は、app.Use デリゲートを使用せずにnextを呼び出していることを意味します。
app.Runに切り替えてエラーを修正します。
影響を受ける API
なし。
.NET