You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

调试.NET Web API时Fiddler无法捕获请求的配置方法咨询

解决Fiddler无法捕获Chrome中.NET Web API请求的问题

我帮很多开发者排查过这个问题,通常都是代理配置或者证书信任的小问题,一步步来就能搞定:

一、先搞定Fiddler的核心监听设置

打开Fiddler后,先确保它的基础配置是对的:

  • 点击顶部菜单栏的 Tools > Options(或者直接按Ctrl+O快捷键)
  • 切换到 Connections 标签页:
    • 勾选 "Allow remote computers to connect"(别担心,这只是允许本地进程连接,不会开放外部访问)
    • 确认监听端口是默认的8888(如果改了端口,后面所有配置都要对应这个数字)
    • 勾选 "Act as system proxy on startup",让Fiddler自动接管系统代理
  • 切换到 HTTPS 标签页:
    • 必须勾选 "Capture HTTPS CONNECTs""Decrypt HTTPS traffic",不然HTTPS请求根本抓不到
    • 点击 Actions > Trust Root Certificate,跟着提示完成证书安装和信任(这一步是关键,很多人就是没做这个导致HTTPS请求失踪)
  • 设置完记得重启Fiddler,让配置生效

二、让Chrome乖乖用Fiddler代理

Chrome有时候会自己搞代理设置,得强制它用Fiddler的代理:

方法1:绑定系统代理(推荐)

  • 打开Chrome,输入chrome://settings/system回车
  • 找到 "Open your computer's proxy settings",打开系统代理面板
  • 确认代理服务器地址是127.0.0.1,端口是8888(和Fiddler的监听端口一致)
  • 也可以直接输chrome://net-internals/#proxy,检查代理模式是不是 "system"

方法2:用插件快速切换(适合频繁切换代理的场景)

  • 装个像 Proxy SwitchyOmega 这样的插件,新建一个代理配置:
    • HTTP和HTTPS代理都填127.0.0.1,端口8888
    • 需要抓包的时候切到这个配置,不用的时候切回直接连接就行

三、别让.NET Web API绕过代理

本地运行的Web API有时候会默认跳过本地代理,得改点配置:

针对IIS Express(传统.NET Framework)

  • 打开项目的.csproj文件,添加这段配置:
<PropertyGroup>
  <UseIISExpress>true</UseIISExpress>
  <IISExpressSSLPort>0</IISExpressSSLPort>
  <IISExpressAnonymousAuthentication>enabled</IISExpressAnonymousAuthentication>
  <IISExpressWindowsAuthentication>disabled</IISExpressWindowsAuthentication>
  <IISExpressUseClassicPipelineMode>false</IISExpressUseClassicPipelineMode>
</PropertyGroup>
  • 或者找到IIS Express的applicationhost.config文件,把站点绑定地址从localhost改成127.0.0.1localhost有时候会被.NET的代理绕过规则忽略)

针对Kestrel(ASP.NET Core)

  • Program.cs里,确保WebHost绑定的是http://0.0.0.0:5000或者http://127.0.0.1:5000,别只绑定localhost
  • 如果API内部有HttpClient调用其他服务,在appsettings.json里加这段配置,让HttpClient也走Fiddler:
"HttpClient": {
  "Proxy": {
    "Address": "http://127.0.0.1:8888",
    "BypassOnLocal": false
  }
}

四、最后测试一下

  • 重启Fiddler和Chrome
  • 在Chrome里访问你的API(比如http://127.0.0.1:5000/api/values),或者用Chrome控制台发POST/PUT/DELETE请求
  • 回到Fiddler,左侧会话列表里应该能看到对应的请求了
  • 如果还是没抓到,试试清一下Chrome缓存(Ctrl+Shift+Delete),或者关掉隐身模式(隐身模式的代理设置是独立的)

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

火山引擎 最新活动