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

如何解决Visual Studio调试.NET 10 Blazor服务端项目时网页超时问题

解决.NET 10服务端Blazor断点停留超时断开问题

针对你遇到的断点停留超30秒后WebSocket连接断开(错误码1006)、页面崩溃的问题,可通过以下步骤解决:

1. 调整SignalR心跳超时配置(服务端)

服务端断点挂起时无法响应SignalR心跳,导致客户端判定连接失效。需在Program.cs中修改Blazor Hub的心跳参数,延长超时时间:

builder.Services.AddServerSideBlazor(options =>
{
    // 设置服务端心跳间隔为5分钟
    options.HubOptions.KeepAliveInterval = TimeSpan.FromMinutes(5);
    // 客户端超时时间需略长于心跳间隔,设为6分钟
    options.HubOptions.ClientTimeoutInterval = TimeSpan.FromMinutes(6);
});

这样即使断点停留5分钟内,服务端不会触发心跳超时,客户端也不会主动断开连接。

2. 调整客户端SignalR连接配置(开发环境)

在wwwroot/index.html中修改Blazor初始化配置,延长客户端心跳检测和重连参数:

<script src="_framework/blazor.web.js" autostart="false"></script>
<script>
    Blazor.start({
        configureSignalR: function (builder) {
            builder.withUrl('/_blazor', {
                skipNegotiation: true,
                transport: signalR.HttpTransportType.WebSocket,
                // 客户端心跳间隔设为5分钟(毫秒)
                keepAliveInterval: 300000
            });
        },
        // 重连间隔设为5秒
        reconnectInterval: 5000,
        // 最大重连次数设为10次
        maxRetries: 10
    });
</script>

注意:此配置仅适合开发调试阶段,生产环境需恢复默认值以保证连接稳定性。

3. 检查反向代理/服务器超时设置

若你的应用部署在IIS、Nginx等反向代理后,这些服务的默认连接超时可能短于你的断点停留时间:

  • IIS:进入站点「高级设置」,将「连接超时」调整为300秒(5分钟)以上。
  • Nginx:在对应location配置块中添加proxy_read_timeout 300s;,延长读取超时时间。

4. 临时调试替代方案

若不想修改配置,可在断点暂停后,手动在Chrome控制台执行以下命令触发重连:

Blazor.reconnect()

此方法仅为临时应急,无法从根本解决问题。

为什么之前的设置无效?

大概率是只修改了客户端或服务端的单一配置,忽略了反向代理层的超时限制,导致某一层先触发了连接断开。需确保服务端、客户端、反向代理的超时时间都大于你的断点停留需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:12:46