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

.NET Core中SQL Server作为SignalR背板出现404错误求助

解决SignalR SQL Server背板无数据插入及多服务器404问题

基础配置排查

  • 确认包与.NET版本匹配:IntelliTect.AspNetCore.SignalR.SqlServer的版本必须和你的.NET Core版本对应,比如.NET Core 3.1对应包的3.x分支,.NET 5+需用5.x及以上版本,版本不兼容会导致隐性功能失效。
  • 检查数据库权限:连接字符串对应的SQL账号不能只有建表权限,必须拥有SignalR相关表的INSERT、UPDATE、DELETE权限,权限不足会直接导致数据无法写入。
  • 验证Hub端点映射:在Startup/Program.cs中必须正确配置Hub的路由映射,否则多服务器环境下会出现404,示例代码:
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<YourCustomHub>("/your-hub-route");
        // 其他端点配置
    });
    
    所有服务器的Hub路由必须完全一致。

背板配置细节优化

  • 显式配置背板参数:尝试手动指定SQL背板的关键配置,确保和已创建的表信息匹配,示例:
    services.AddSignalR()
        .AddSqlServer(options =>
        {
            options.ConnectionString = Configuration.GetConnectionString("Default");
            options.TableName = "SignalRMessages"; // 与已生成的表名一致
            options.SchemaName = "dbo";
        });
    
  • 统一应用名称:多服务器集群中,所有节点的应用名称必须完全相同,SignalR依赖这个标识来识别同集群节点,配置方式:
    services.AddDataProtection()
        .SetApplicationName("YourUniqueAppIdentifier");
    
    名称不一致会导致节点无法同步消息,还可能引发路由类404问题。

日志定位问题

  • 启用SignalR详细日志,在appsettings.json中添加:
    {
      "Logging": {
        "LogLevel": {
          "Microsoft.AspNetCore.SignalR": "Debug",
          "Microsoft.AspNetCore.Http.Connections": "Debug"
        }
      }
    }
    
    查看日志中是否存在SQL写入异常、Hub连接失败等信息,这是快速定位问题的核心手段。

多服务器404额外排查点

  • 确认负载均衡器配置正确:需支持WebSocket转发(若使用WebSocket传输),并且调整超时时间匹配SignalR的长连接设置,避免负载均衡器主动断开连接。
  • 检查服务器网络连通性:确保所有服务器都能正常访问目标SQL Server实例,无防火墙或网络策略拦截数据库请求。

内容的提问来源于stack exchange,提问作者saravanan shanmugasundaram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:07:10