You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:25:03