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

Blazor Server部署至ASPNIX后60秒无活动断开连接,是否正常?如何保活?

Blazor Server 连接超时问题解答

这个现象是预期的默认行为吗?

没错,这是Blazor Server的默认预期行为。Blazor Server依赖SignalR与服务器建立实时双向连接,为了节省服务器资源,框架默认设置了60秒的闲置超时时间——当客户端超过60秒没有和服务器交互时,服务器会主动断开连接,客户端检测到连接中断后就会显示你看到的「Could not reconnect to the server. Reload the page to restore functionality」提示。

怎么维持服务器连接持续有效?

你可以通过以下几种方式来延长甚至保持连接活跃:

1. 调整SignalR的超时与心跳配置

在项目的Program.cs中,修改Blazor Server的Hub配置,延长心跳间隔和客户端超时时间:

builder.Services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        // 设置服务器主动发送心跳的间隔(比如5分钟)
        options.KeepAliveInterval = TimeSpan.FromMinutes(5);
        // 设置服务器等待客户端响应的最长时间,要比心跳间隔稍长
        options.ClientTimeoutInterval = TimeSpan.FromMinutes(6);
    });

原理是:服务器每隔一段时间发送心跳包,告诉客户端「连接还活着」,同时延长服务器等待客户端响应的时间,避免误判连接断开。

2. 客户端主动发送「保活」请求

如果你的托管环境(比如ASPNIX)有反向代理或负载均衡,可能会主动掐掉闲置连接,这时候可以在客户端定时发送一个无意义的请求,保持连接活跃。比如在MainLayout.razor中添加定时器:

@implements IDisposable
@inject IJSRuntime JSRuntime

@code {
    private Timer _keepAliveTimer;

    protected override void OnInitialized()
    {
        // 每隔45秒触发一次保活操作(时间要短于服务器超时时间)
        _keepAliveTimer = new Timer(_ =>
        {
            InvokeAsync(async () =>
            {
                // 调用一个空的JS方法,或者触发一个无意义的服务器方法
                await JSRuntime.InvokeVoidAsync("console.log", "Connection keep-alive ping");
            });
        }, null, 0, 45000);
    }

    public void Dispose()
    {
        _keepAliveTimer?.Dispose();
    }
}

这样能确保连接不会因为「闲置」被中间节点断开。

3. 检查托管服务的闲置超时设置

像ASPNIX这类托管服务,可能会有自己的应用程序池回收规则或反向代理超时设置(比如IIS的闲置超时、反向代理的连接超时)。你需要确认这些设置的超时时间是否长于你配置的SignalR超时时间,如果不是,联系托管服务商调整,或者在后台面板自行修改。

4. 优化重连体验(可选)

如果没法完全避免连接断开,可以优化重连逻辑,让客户端自动尝试重连,提升用户体验。在_Host.cshtml(或_Layout.cshtml)中修改Blazor的启动脚本:

<script src="_framework/blazor.server.js" autostart="false"></script>
<script>
  Blazor.start({
    reconnectOptions: {
      maxRetries: 5, // 最多尝试5次重连
      retryIntervalMilliseconds: 3000 // 每次重连间隔3秒
    }
  });
</script>

这样客户端会自动尝试重连,而不是直接提示用户刷新页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:07:55