调试.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 - 需要抓包的时候切到这个配置,不用的时候切回直接连接就行
- HTTP和HTTPS代理都填
三、别让.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.1(localhost有时候会被.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




