.NET7及以上ASP.NET Core Web API中如何为SignalR Hub添加路由?
在.NET 7.0 ASP.NET Core Web API(WebApplication模板)中配置SignalR Hub路由
步骤1:安装SignalR NuGet包
使用.NET CLI执行以下命令,或通过Visual Studio的NuGet包管理器安装:
dotnet add package Microsoft.AspNetCore.SignalR
步骤2:注册SignalR服务
在Program.cs中,构建WebApplication实例之前,添加SignalR服务注册:
var builder = WebApplication.CreateBuilder(args); // 注册SignalR服务 builder.Services.AddSignalR(); // 保留模板自带的控制器注册 builder.Services.AddControllers(); var app = builder.Build();
步骤3:配置Hub路由
在中间件管道中,在UseAuthorization()之后、Run()之前添加Hub路由映射,注意路由路径需避免与现有控制器路由冲突:
// 模板自带的中间件配置 app.UseHttpsRedirection(); app.UseAuthorization(); // 映射控制器路由 app.MapControllers(); // 映射你的SignalR Hub,替换为实际的Hub类和路由路径 app.MapHub<ChatHub>("/chatHub"); app.Run();
示例Hub类
创建一个简单的Hub类作为参考:
using Microsoft.AspNetCore.SignalR; public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } }
关键注意事项
- 路由顺序:
MapHub必须放在授权中间件之后,确保Hub可正确应用授权规则(若有需求)。 - 客户端连接:前端使用SignalR客户端时,连接URL需与
MapHub中配置的路径一致,例如:import { HubConnectionBuilder } from '@microsoft/signalr'; const connection = new HubConnectionBuilder() .withUrl('/chatHub') .build();
内容的提问来源于stack exchange,提问作者Eric Ouellet
相关产品推荐
相关产品推荐

