Share via


SignalR:已移除 UseSignalR 與 UseConnections 方法

在 ASP.NET Core 3.0 中,SignalR 已採用端點路由。 在變更過程中,UseSignalRUseConnections 和一些相關方法標示為已淘汰。 在 ASP.NET Core 5.0 中,這些已淘汰的方法已移除。 如需方法的完整清單,請參閱受影響的 API

若要查看此問題的相關討論,請參閱 dotnet/aspnetcore#20082

導入的版本

5.0 預覽版 3

舊的行為

SignalR 中樞和連線處理常式可以使用 UseSignalRUseConnections 方法,在中介軟體管線中註冊。

新的行為

SignalR 中樞和連接線處理常式應該使用 IEndpointRouteBuilder 上的 MapHubMapConnectionHandler 擴充方法在 UseEndpoints 內註冊。

變更原因

舊方法具有自訂路由邏輯,但無法與 ASP.NET Core 中的其他路由元件互動。 ASP.NET Core 3.0 中引進了新的一般用途路由系統,稱為端點路由。 端點路由可讓 SignalR 與其他路由元件互動。 切換至此模型可讓使用者了解端點路由的完整優點。 因此,已移除舊的方法。

從專案的 Startup.Configure 方法中移除呼叫 UseSignalRUseConnections 的程式碼。 在呼叫 UseEndpoints 的內文中,將其分別取代為對 MapHubMapConnectionHandler 發出的呼叫。 例如:

舊程式碼:

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

新程式碼:

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

一般而言,您先前的 MapHubMapConnectionHandler 呼叫可以直接從 UseSignalRUseConnections 的內文傳輸至 UseEndpoints,僅需些微變更或根本不需要變更。

受影響的 API