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

特定HTTP Get请求返回空响应的排查求助(ASP.NET MVC+IIS)

问题描述

项目基于ASP.NET MVC框架开发,部署在Windows Server 2012 R2服务器上,近期出现如下异常:

  • 收到IIS工作进程行为异常告警,网站曾发生宕机
  • 部分HTTP GET请求可正常获取数据,但部分请求返回200状态码却无响应体
  • 异常GET请求已被IIS日志记录,但未出现在网站日志中,说明IIS接收请求后未转发至网站处理,直接返回空响应,疑似规则拦截/过滤
  • 已执行IIS重置、服务器重启操作,网站对应的w3wp.exe进程CPU使用率正常
  • 将异常GET请求改为POST请求后可正常工作

正常GET请求截图:正常GET请求
异常GET请求截图:异常GET请求

排查与修复建议

1. 检查IIS URL重写规则

  • 打开IIS管理器,定位目标网站,查看URL重写模块中的所有规则,确认是否存在针对GET请求的拦截、改写规则,尤其是可能导致响应截断的规则
  • 临时禁用所有自定义重写规则,测试异常请求是否恢复正常,逐步排查出问题规则

2. 验证请求过滤模块设置

  • 进入网站的请求过滤配置:
    • 检查「HTTP谓词」选项卡,确认GET请求未被拒绝
    • 查看「URL」和「查询字符串」过滤规则,是否存在匹配异常请求的禁止规则
    • 检查「请求限制」中的内容长度、最大URL长度等设置,确认是否异常请求的参数或URL长度触发了限制

3. 排查ASP.NET请求限制

  • 打开项目web.config,查看<httpRuntime>节点的maxQueryStringLength、maxUrlLength等参数,确认是否因GET请求的查询字符串过长被拦截
  • 检查IIS配置中的<requestLimits>节点,确认是否限制了GET请求的相关参数

4. 检查第三方IIS模块

  • 若服务器安装了安全类(如WAF)、性能优化类第三方IIS模块,临时禁用这些模块后测试异常请求
  • 重点排查针对GET请求的防护规则,比如SQL注入检测、请求频率限制等是否误拦截了合法请求

5. 启用IIS失败请求跟踪

  • 配置IIS的失败请求跟踪规则,针对返回200但无响应体的请求进行跟踪,查看请求在IIS管道中的处理流程,定位具体哪个环节截断了响应
  • 跟踪日志会详细记录每个模块的处理动作,可明确是IIS原生模块还是自定义模块导致的问题

6. 检查应用程序池配置

  • 确认应用程序池的.NET CLR版本、托管管道模式与项目要求匹配
  • 查看应用程序池的「高级设置」,检查「队列长度」「请求限制」等参数,是否因队列溢出导致请求未转发至应用程序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:47