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

.NET 6 Minimal Web API部署IIS后10秒连接重置问题排查

问题分析与排查建议

10秒超时的核心来源推测

最可能的原因是ASP.NET Core Module (ANCM)的默认请求转发超时,ANCM作为IIS与Kestrel之间的中间层,默认requestTimeout为10秒。当你的8位设备接收响应耗时超过这个阈值,ANCM会主动断开TCP连接并发送RST包,这和你抓包看到的服务器发起RST的现象完全匹配。

此外,还需排查以下潜在来源:

  • IIS站点的连接超时设置(虽默认120秒,但不排除被手动修改为10秒)
  • Http.sys内核驱动的空闲连接超时(默认120秒,若被篡改也会触发问题)
  • Kestrel未配置的其他超时参数(如请求体接收超时,不过你的场景更偏向响应阶段)

具体排查与修复步骤

步骤1:修改ANCM的请求超时配置

在项目的web.config文件中,找到<aspNetCore>节点,添加或修改requestTimeout属性,设置为足够长的时间(例如5分钟):

<aspNetCore processPath="dotnet" arguments=".\YourProject.dll" 
            stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
            hostingModel="inprocess" requestTimeout="00:05:00" />

这是解决当前10秒超时的关键步骤,因为进程内托管模式下,ANCM的超时优先级高于Kestrel的配置。

步骤2:验证并调整IIS站点连接超时

  1. 打开IIS管理器,定位到你的目标站点
  2. 右键选择「管理网站」→「高级设置」
  3. 查看「连接超时」项,确保值不是10秒,建议设置为300秒(5分钟)以上

步骤3:检查Http.sys超时参数

  1. 以管理员身份打开命令提示符,执行:
    netsh http show timeout
    
  2. 查看IdleTimeout等参数,若值为10秒,执行以下命令修改(示例为300秒):
    netsh http set timeout idletimeout=300
    

步骤4:补充配置Kestrel的相关超时

虽然进程内托管下Kestrel的部分参数被ANCM覆盖,但仍建议补充配置以下参数,覆盖默认值:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(5);
    serverOptions.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(5);
    serverOptions.Limits.RequestBodyTimeout = TimeSpan.FromMinutes(5); // 防止设备发送请求体过慢超时
});

步骤5:启用日志定位问题

  1. 启用Kestrel详细日志,在appsettings.json中添加:
    "Logging": {
        "LogLevel": {
            "Microsoft.AspNetCore.Server.Kestrel": "Debug"
        }
    }
    
  2. 启用ANCM日志,修改web.config的<aspNetCore>节点,设置stdoutLogEnabled="true",日志会生成在指定的stdoutLogFile路径下,可从中查看超时触发的具体阶段。

为什么之前的Kestrel参数无效?

当ASP.NET Core项目以进程内托管模式部署在IIS上时,Kestrel并非直接监听TCP端口,而是由ANCM负责接收请求并转发给Kestrel进程。此时ANCM的超时配置会优先生效,你之前设置的Kestrel参数无法覆盖ANCM的10秒默认超时,因此没有效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:52:31