You need to enable JavaScript to run this app. IIS 10托管IISNode时Express接口接收大数据POST请求报连接重置错误
优惠活动
大模型
产品
解决方案
定价
更多

IIS 10托管IISNode时Express接口接收大数据POST请求报连接重置错误

排查思路与解决方案
  • 优先检查Express请求体解析中间件限制
    你当前未展示Express的请求体解析配置,默认express.json()(或旧版bodyParser.json())的请求体大小限制仅为100KB,超出阈值会直接拦截请求、无返回,符合你“请求无法到达接口端点”的特征。调整方式为修改中间件配置,按需调大上限:
    // 示例调整为50MB上限,可根据实际业务需要修改
    app.use(express.json({ limit: '50mb' }))
    
  • 补充IIS与iisnode的超时、大小限制配置
    你当前配置了maxAllowedContentLength,但缺少超时相关配置,2分钟报错刚好匹配IIS默认的请求超时阈值。在Node侧的web.config中补充以下配置:
    <configuration>
      <system.web>
        <!-- 执行超时单位为秒,最大请求大小单位为KB,此处配置为2GB、10分钟超时 -->
        <httpRuntime executionTimeout="600" maxRequestLength="2097151" />
      </system.web>
      <system.webServer>
        <!-- 新增iisnode超时配置 -->
        <iisnode requestTimeout="00:10:00" idleTimeoutOut="3600000" />
        <!-- 原有配置保持不变 -->
      </system.webServer>
    </configuration>
    
    同时需要调整IIS对应应用程序池的配置:将闲置超时、队列长度、常规超时均调大到大于业务实际耗时的数值。
  • 补充Node侧异常捕获逻辑
    你当前的接口代码未处理searchMultipleProduct的运行异常,若该方法处理大数据时抛出错误、超时未返回,未捕获的Promise异常会导致Node进程崩溃,iisnode会主动重置连接,对应你遇到的报错。修改接口代码补充异常捕获:
    app.post('/searchMultiple', (request, response) => {
        tableData = request.body;
        if (tableData.length > 0) {
            searchMultipleProduct(tableData)
                .then(results => {
                    response.status(200);
                    response.json(results);
                })
                // 新增异常捕获
                .catch(err => {
                    console.error('接口处理错误:', err);
                    response.status(500).json({ error: '服务处理失败' });
                });
        } else {
            response.end();
        }
    });
    
    同时可在Node启动代码中新增全局异常监听,避免进程意外崩溃:
    process.on('unhandledRejection', err => console.error('未捕获的Promise异常:', err));
    process.on('uncaughtException', err => console.error('未捕获的全局异常:', err));
    
  • 分层排查定位问题层级
    可以通过分层测试快速定位问题:
    1. 直接在服务器本地用Postman调用Node服务的localhost:3000/searchMultiple接口,发送超过320条的请求体:如果请求正常返回,说明问题出在IIS代理/ASP.NET前端层;如果同样报错,说明问题在Node服务层。
    2. 若确认是IIS层问题,可排查服务器是否存在WAF、安全组、杀毒软件拦截大体积POST请求的规则,同时检查TCP连接相关的系统策略是否有限制。
  • 调整ASP.NET前端配置
    在前端的web.config中,给httpRuntime节点补充大小和超时配置:
    <httpRuntime targetFramework="4.7.2" maxRequestLength="2097151" executionTimeout="600" />
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 19:45:08