SignalR:删除了 UseSignalR 和 UseConnections 方法

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

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

已引入的版本

5.0 预览版 3

旧行为

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

新行为

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

更改原因

旧方法具有自定义路由逻辑,这些逻辑未与 ASP.NET Core 中的其他路由组件交互。 在 ASP.NET Core 3.0 中,引入了名为终结点路由的新常规用途路由系统。 终结点路由使 SignalR 能够与其他路由组件交互。 切换到此模型可让用户实现终结点路由的全部优势。 因此,已删除旧方法。

删除项目的 UseSignalR 方法中调用 UseConnectionsStartup.Configure 的代码。 在调用 MapHub 的主体中,分别将其替换为对 MapConnectionHandlerUseEndpoints 的调用。 例如:

旧代码:

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

新代码:

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

通常,以前的 MapHubMapConnectionHandler 调用几乎不需要更改即可从 UseSignalRUseConnections 的主体直接转移到 UseEndpoints

受影响的 API