如何解决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
相关产品推荐
相关产品推荐

