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

IIS反向代理Node.js触发HTTP Error 502.3 2分钟超时问题

问题根因

你配置的httpRuntime executionTimeout仅对ASP.NET MVC自身的托管代码请求处理流程生效,完全不控制IIS反向代理(ARR模块)转发请求到后端Node.js服务的超时阈值。IIS ARR反向代理的默认超时时间恰好是120秒(2分钟),和你遇到的报错触发时机完全匹配。
另外你当前的web.config里存在两条完全重复的反向代理规则,第二条属于冗余配置永远不会触发,可以直接删除。

修复步骤

1. 补充ARR反向代理超时配置

在web.config的<system.webServer>节点下新增<proxy>配置节点,设置代理超时时间(时间格式为时:分:秒,你需要的1000秒约为16分40秒,可按需设置更长),同时关闭响应缓冲避免大体积地理数据返回异常,修改后的完整system.webServer节点示例如下:

<system.webServer>
    <!-- 新增反向代理超时配置 -->
    <proxy enabled="true" timeout="00:20:00" responseBufferLimit="0" />
    <rewrite>
        <rules>                 
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://localhost:5000/{R:1}" />
            </rule>
            <!-- 删除重复的第二条冗余规则即可 -->
        </rules>
    </rewrite>
</system.webServer>

2. 修改IIS站点连接超时

IIS站点默认的连接超时也是120秒,这个配置不受web.config中httpRuntime参数控制,需要单独修改:

  • 图形化操作:打开IIS管理器,选中对应部署的站点,点击右侧操作栏的「高级设置」,找到「连接超时」选项,将值改为1200秒(或你需要的时长)后保存。
  • 命令行操作:以管理员身份运行命令提示符,执行以下命令直接修改站点默认连接超时为20分钟:
%windir%\system32\inetsrv\appcmd set config /section:sites /siteDefaults.limits.connectionTimeout:00:20:00

3. 生效配置

修改完成后,重启对应IIS站点和关联的应用程序池,配置即可生效。

优化建议

你用turf.js处理大规模多边形数据属于典型的长耗时计算场景,即使调高超时阈值,也可能因为应用程序池回收、中间网络波动导致请求中断,更稳妥的方案是改成异步任务模式:

  • Node.js收到计算请求后立刻返回唯一任务ID,将计算任务放到后台异步执行
  • 前端拿到任务ID后定时轮询任务状态接口,等计算完成后再拉取结果
    从架构上避免长时间同步等待请求的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:45:44