Blazor Server调试超时触发断连重连 如何调整超时配置
Blazor Server 调试单步触发连接超时的配置方案
该问题是Blazor Server底层依赖的SignalR连接默认超时阈值为30秒导致的:单步调试时服务端线程被挂起,无法按时发送心跳包,就会触发客户端超时重连逻辑。可通过以下配置修改超时限制:
1. 服务端配置
在.NET 6+项目的Program.cs文件中,修改Blazor服务注册逻辑,调整电路和SignalR Hub的超时参数:
builder.Services.AddServerSideBlazor() // 配置电路保留规则 .AddCircuitOptions(opt => { // 连接断开后电路保留时长,此处设为10分钟 opt.DisconnectedCircuitRetentionPeriod = TimeSpan.FromMinutes(10); }) // 配置SignalR Hub参数 .AddHubOptions(opt => { // 服务端心跳发送间隔,此处设为5分钟 opt.KeepAliveInterval = TimeSpan.FromSeconds(300); // 客户端无消息超时阈值,此处设为10分钟 opt.ClientTimeoutInterval = TimeSpan.FromSeconds(600); });
2. 客户端配置
在项目入口页(Pages/_Host.cshtml 或 wwwroot/index.html)中,修改Blazor初始化逻辑,同步调整客户端侧的超时参数:
<!-- 原有blazor.server.js引用保留 --> <script src="_framework/blazor.server.js"></script> <script> Blazor.start({ configureSignalR: builder => { // 客户端超时时间,单位毫秒,此处设为10分钟 builder.withServerTimeout(600000); // 客户端心跳发送间隔,单位毫秒,此处设为5分钟 builder.withKeepAliveInterval(300000); } }); </script>
调试环境专属优化
如果不希望修改生产环境的默认超时规则,可使用编译指令或环境变量判断,仅在DEBUG模式下应用上述超长超时配置。
注意:以上大时长超时配置仅适用于本地开发调试场景,生产环境请恢复默认值,避免大量僵尸连接占用服务器资源。
内容的提问来源于stack exchange,提问作者joke labs
相关产品推荐
相关产品推荐

