.NET Core API部署IIS后每10分钟收到本地根目录GET请求问题
这种情况我之前部署.NET Core API到IIS时也遇到过,大概率是IIS自身的内置机制在定期发起请求,下面给你拆解可能的原因、排查步骤和解决办法:
可能的触发原因
- IIS应用池的存活Ping检查:这是最常见的原因,IIS默认会每隔10分钟(600秒)Ping一次应用池对应的站点根路径,用来确认应用池是否正常响应,这个请求的来源自然就是localhost。
- 健康检查中间件的误配置:如果你的API里配置了ASP.NET Core健康检查,且把健康检查端点设为了根目录(比如
/),那不管是IIS的监控还是自身的定时任务,都可能定期调用这个端点。 - 服务器内置监控工具:部分Windows Server的监控组件或者第三方轻量监控工具,也可能会定期发起本地请求来确认站点可用性,但这种情况相对少见,优先排查前两项。
排查验证步骤
- 检查IIS应用池的Ping设置
- 打开IIS管理器,找到你的应用池→右键选择「高级设置」
- 找到「Ping Enabled」「Ping Interval」「Ping Path」这几个选项:默认
Ping Interval就是10分钟,Ping Path默认是站点根路径。如果这里是启用状态,那基本就是它在触发请求了。
- 核对健康检查配置
- 翻一下你的
Program.cs或者旧版的Startup.cs,看看有没有类似这样的代码:
如果健康检查端点设为了根目录,那也会导致定期的本地请求。app.UseHealthChecks("/");
- 翻一下你的
- 深挖Application Insights日志细节
- 你可以在Application Insights里查看该请求的
UserAgent字段,IIS的Ping请求通常会带有特定标识(比如IIS Application Pool Ping),这能帮你100%确认来源。
- 你可以在Application Insights里查看该请求的
具体解决办法
- 修改Ping路径(推荐):如果不想关闭存活检查,就新建一个无业务逻辑的健康端点(比如
/health),然后在应用池高级设置里把「Ping Path」改成这个路径,这样既保留了存活检测,又不会干扰根路径的日志。 - 直接禁用Ping:如果你的站点不需要IIS的存活检查,直接把「Ping Enabled」改成
False即可。 - 调整健康检查端点:如果是健康检查的问题,把健康检查的路径改成非根目录,比如:
app.UseHealthChecks("/health");
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

