SignalR:UseSignalR 和 UseConnections 方法已删除

在 ASP.NET Core 3.0 中,SignalR 采用了终结点路由。 作为此更改的一部分,UseSignalRUseConnections 和一些相关方法均被标记为过时。 在 ASP.NET Core 5.0 中,删除了那些已过时的方法。 有关方法的完整列表,请参阅 受影响的 API

有关此问题的讨论,请参阅 dotnet/aspnetcore#20082

引入的版本

5.0 预览版 3

旧行为

可以使用 UseSignalRUseConnections 方法在中间件管道中注册 SignalR 集线器和连接处理程序。

新行为

应使用 IEndpointRouteBuilder 上的 MapHubMapConnectionHandler 扩展方法在 UseEndpoints 中注册 SignalR 集线器和连接处理程序。

更改原因

旧方法具有自定义路由逻辑,该逻辑不与 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