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

Azure Web App问题:WebSocket连接100秒后自动中止

解决OWIN WebSocket 100秒规律性断开问题

根据你描述的情况——不管部署到Azure Web App还是本地IIS Express,WebSocket连接都会在100秒左右准时断开——这个问题几乎可以肯定是空闲超时机制在作祟。刚好这个100秒的时长,和Azure Web App默认的WebSocket空闲超时时间完全匹配,IIS Express的默认配置也会触发类似的短超时。下面是具体的解决方案:

1. 给WebSocket添加心跳(Ping/Pong)机制

这是最根本的解决办法,不管服务器怎么配置,只要保持连接有持续的小数据传输,就能避免被判定为空闲。我之前处理类似问题时,会在OWIN的WebSocket处理逻辑里加一个后台任务定时发送Ping帧:

public async Task ProcessWebSocketRequest(WebSocket webSocket)
{
    var keepAliveToken = new CancellationTokenSource();
    // 启动心跳任务,每30秒发一次Ping(远小于100秒超时阈值)
    var keepAliveTask = Task.Run(async () =>
    {
        while (!keepAliveToken.IsCancellationRequested)
        {
            await Task.Delay(30000);
            if (webSocket.State == WebSocketState.Open)
            {
                await webSocket.SendAsync(
                    new ArraySegment<byte>(new byte[0]),
                    WebSocketMessageType.Ping,
                    true,
                    CancellationToken.None);
            }
        }
    });

    // 这里写你的客户端消息处理逻辑...

    // 连接断开时取消心跳任务
    keepAliveToken.Cancel();
    await keepAliveTask;
}

2. 调整Azure Web App的WebSocket超时配置

如果不想依赖心跳(或者作为补充方案),可以直接修改Azure Web App的超时设置:

  • 登录Azure门户,找到你的目标Web App
  • 进入「配置」→「常规设置」页面
  • 在「WebSocket」区域,把「空闲超时」调整为你需要的时长(比如设为3600秒,也就是1小时)
  • 也可以通过添加应用环境变量的方式配置:新增WEBSOCKET_IDLE_TIMEOUT变量,值设为你想要的秒数

3. 修改IIS Express的超时设置

本地测试用IIS Express时,需要调整它的配置文件:

  1. 找到IIS Express的applicationhost.config文件,通常路径是Documents\IISExpress\config\applicationhost.config
  2. 定位到你项目对应的站点节点,在<webSocket>标签里修改timeout和pingInterval属性:
<site name="YourWebSocketApp" id="1">
    <!-- 其他站点配置... -->
    <webSocket enabled="true" pingInterval="00:00:10" timeout="00:30:00" />
</site>

这里把超时设为30分钟,Ping间隔设为10秒,确保本地测试时不会提前断开连接。

建议优先测试心跳机制,这是跨环境通用的解决方案,再配合服务器端的超时配置,就能彻底解决这个规律性断开的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:28