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

Blazor Server搭配负载均衡器时SignalR连接失败问题求助

Blazor Server 负载均衡部署下WebSocket连接问题解决

问题概述

直接连接IIS服务器时Blazor Server可正常建立WebSocket连接,但通过负载均衡器访问时,系统会尝试使用负载均衡器域名发起WebSocket请求,而负载均衡器未部署SignalR,导致连接失败(错误截图:Blazor连接错误)。已尝试配置转发头但未解决问题,配置代码如下:

services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders =
                ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
        });

 app.UseForwardedHeaders();

解决方案

要让Blazor Server绕过负载均衡器直接连接IIS服务器,核心是强制指定SignalR的WebSocket连接地址为IIS服务器地址,以下是具体实现方式:

方法一:后端配置指定SignalR端点

在项目的Program.cs中,修改ServerSideBlazor的配置,显式设置SignalR的Hub地址为IIS服务器的完整地址:

builder.Services.AddServerSideBlazor(options =>
{
    // 替换为你的IIS服务器域名/IP+端口,示例:https://iis-server:8080/_blazor
    options.ServerSideHubUrl = "你的IIS服务器完整地址/_blazor";
});

方法二:前端覆盖SignalR连接地址(方法一无效时使用)

如果后端配置后问题仍存在,可在_Host.cshtml中通过JS手动指定连接地址:

<script src="_framework/blazor.server.js"></script>
<script>
    Blazor.start({
        configureSignalR: function (builder) {
            // 替换为你的IIS服务器完整地址
            builder.withUrl("你的IIS服务器完整地址/_blazor");
        }
    });
</script>

额外注意事项

  • 确保IIS服务器已启用WebSocket功能,且防火墙允许外部访问对应端口
  • 若IIS使用非标准端口,地址中必须包含端口号
  • 负载均衡器仅需转发普通HTTP请求,WebSocket请求由客户端直接发往IIS服务器即可

内容的提问来源于stack exchange,提问作者Eric Rameil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:32:46