ミドルウェア: 新しい Use オーバーロード
app.Use
の新しいオーバーロードが導入されました。 app.Use
を呼び出しても next
ミドルウェアを呼び出さない場合、コンパイラ エラー CS0121 が発生するようになります。
次のメソッドまたはプロパティ間で呼び出しが不適切です: 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' と 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'
エラーを解決するには、app.Use
の代わりに app.Run
を使用します。
ディスカッションについては、GitHub のイシュー dotnet/aspnetcore#32020 を参照してください。
導入されたバージョン
ASP.NET Core 6.0
以前の動作
app.Use(async (context, next) =>
{
await next();
});
or
app.Use(async (context, next) =>
{
await SomeAsyncWork();
// next not called...
});
新しい動作
next
デリゲートに context
を渡すことができます。
app.Use(async (context, next) =>
{
await next(context);
});
ミドルウェアで next
を呼び出すことがない場合は、app.Run
を使用します。
app.Run(async (context) =>
{
await SomeAsyncWork();
// next never called
});
変更理由
前の Use
メソッドは、要求ごとに 2 つのオブジェクトを割り当てます。 新しいオーバーロードを使用すると、next
ミドルウェアの呼び出し方法を少し変更するだけで、これらの割り当てを回避できます。
推奨アクション
コンパイル エラーが発生する場合は、next
デリゲートを使用せずに app.Use
を呼び出していることを意味します。 エラーを修正するには、app.Run
に切り替えます。
影響を受ける API
なし。
.NET