SignalR:UseSignalR メソッドと UseConnections メソッドが削除された

ASP.NET Core 3.0 の SignalR では、エンドポイント ルーティングが採用されました。 その変更の一環として、UseSignalRUseConnections、およびいくつかの関連するメソッドが古い機能としてマークされました。 ASP.NET Core 5.0 では、これらの古いメソッドが削除されました。 メソッドの完全な一覧については、「影響を受ける API」をご覧ください。

この問題に関するディスカッションについては、dotnet/aspnetcore#20082 を参照してください。

導入されたバージョン

5.0 Preview 3

以前の動作

SignalR のハブと接続ハンドラーは、UseSignalR または UseConnections メソッドを使用して、ミドルウェア パイプラインで登録できました。

新しい動作

SignalR のハブと接続ハンドラーは、IEndpointRouteBuilderMapHub および MapConnectionHandler 拡張メソッドを使用して、UseEndpoints 内で登録する必要があります。

変更理由

以前のメソッドには、ASP.NET Core の他のルーティング コンポーネントとやり取りしないカスタム ルーティング ロジックがありました。 ASP.NET Core 3.0 では、エンドポイント ルーティングと呼ばれる新しい汎用ルーティング システムが導入されました。 エンドポイント ルーティングにより、SignalR は他のルーティング コンポーネントとやり取りできるようになりました。 このモデルに切り替えることで、ユーザーはエンドポイント ルーティングの利点を最大限に活用できます。 そのため、古いメソッドは削除されています。

プロジェクトの Startup.Configure メソッドから、UseSignalR または UseConnections を呼び出すコードを削除します。 それを、UseEndpoints の呼び出しの本体内で、それぞれ MapHub または MapConnectionHandler の呼び出しに置き換えます。 次に例を示します。

古いコード:

app.UseSignalR(routes =>
{
    routes.MapHub<SomeHub>("/path");
});

新しいコード:

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<SomeHub>("/path");
});

一般に、以前の MapHub および MapConnectionHandler の呼び出しは、ほとんどまたはまったく変更を行わずに、UseSignalR および UseConnections の本体から UseEndpoints に直接移すことができます。

影響を受ける API