SignalR:已移除 UseSignalR 與 UseConnections 方法
在 ASP.NET Core 3.0 中,SignalR 已採用端點路由。 在變更過程中,UseSignalR、UseConnections 和一些相關方法標示為已淘汰。 在 ASP.NET Core 5.0 中,這些已淘汰的方法已移除。 如需方法的完整清單,請參閱受影響的 API。
若要查看此問題的相關討論,請參閱 dotnet/aspnetcore#20082。
導入的版本
5.0 預覽版 3
舊的行為
SignalR 中樞和連線處理常式可以使用 UseSignalR
或 UseConnections
方法,在中介軟體管線中註冊。
新的行為
SignalR 中樞和連接線處理常式應該使用 IEndpointRouteBuilder 上的 MapHub 和 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
,僅需些微變更或根本不需要變更。