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

.NET 8 Blazor Server「无法重连服务器」问题修复方案咨询

针对Blazor Server连接保持2小时的解决方案

一、Azure环境配置调整

  • 修改App Service闲置超时:Azure App Service默认20分钟闲置后会回收进程,直接导致Blazor电路断开。在Azure门户的App Service「配置-常规设置」中,将闲置超时设为120分钟(2小时)。
  • 调整Azure SignalR服务超时:若使用Azure托管SignalR服务,在服务的「设置」页面,将服务器超时和客户端超时均设置为7200000毫秒(2小时)。

二、Blazor应用端补充配置

  • 完善Circuit参数配置:除DisconnectedCircuitRetentionPeriod外,需配置心跳间隔和重连策略,确保服务器主动维持连接。在Program.cs中:
builder.Services.AddServerSideBlazor(options =>
{
    options.DisconnectedCircuitRetentionPeriod = TimeSpan.FromHours(2);
    options.KeepAliveInterval = TimeSpan.FromMinutes(5); // 每5分钟发送心跳,避免中间网络设备断连
    options.MaximumRetryCount = 10; // 提升重连尝试次数
});
  • 优化客户端SignalR配置:在_Layout.cshtml的Blazor初始化脚本中,补充心跳间隔和重连规则:
<script>
    Blazor.start({
        configureSignalR: function (builder) {
            builder.withServerTimeout(7200000)
                   .withKeepAliveInterval(300000); // 与服务端心跳间隔保持一致
        },
        reconnectionOptions: {
            maxRetries: 10,
            retryIntervalMilliseconds: 3000
        }
    });
</script>
  • 添加用户活跃检测:通过JS监听用户操作,定期触发空交互维持连接。在页面中加入:
let lastActivity = Date.now();
window.addEventListener('mousemove', () => lastActivity = Date.now());
window.addEventListener('keydown', () => lastActivity = Date.now());

// 每5分钟触发一次空交互,维持电路活跃
setInterval(() => {
    if (Date.now() - lastActivity < 7200000) {
        window.blazorKeepAlive.trigger();
    }
}, 300000);

在Blazor组件中注册对应的互操作方法:

[JSInvokable("trigger")]
public static void KeepAliveTrigger()
{
    // 空方法,仅用于触发服务器交互,维持电路状态
}

三、网络层面排查与优化

  • 启用WebSockets协议:在Azure App Service「配置-常规设置」中确认WebSockets已开启,这是Blazor Server最稳定的传输方式。
  • 缩短心跳间隔:若企业网络存在防火墙/代理自动断连的情况,可将心跳间隔调整为3分钟(180000毫秒),确保连接持续有数据流动。

关于技术选择的说明

Blazor Server适合需要服务器端状态管理的场景,但依赖SignalR连接的特性确实对稳定性有要求。如果用户长时间无操作但需要保留表单数据,可额外做以下优化:

  • 客户端自动保存:用localStorage定期保存表单输入内容,即使断连重加载也能恢复数据。
  • 混合模式开发:表单部分采用Blazor WebAssembly模式,数据存在客户端;其他依赖服务器状态的部分保留Blazor Server模式,平衡状态管理与连接稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:32:19