我该如何使用 Fiddler 或其他工具跟踪 HttpClient 请求?

54
我正在使用HttpClient向一项我无法访问的Web API服务发送请求,我需要追踪从客户端到服务器的实际请求流。是否有办法连接Fiddler以便监听这些请求?
我正在使用System.Net.Http.HttpClient类来发送请求。
更新:现在我正在尝试改进这个问题,因为我没有得到我想要的答案。我正在使用一个.NET客户端应用程序通过HTTP通道连接到我自己的IIS上托管的Web服务。我之前已经使用过Fiddler调试,在我的IIS上托管的网站和浏览器之间观察生成的流量。但是当涉及到使用HttpClient类与Web服务通信时,Fiddler似乎无法捕获该流量并显示任何内容。.Net HttpClient是否绕过WinInet API连接到服务,导致Fiddler无法观察流量?

1
.NET 不使用 WinINET,而 Fiddler 也不关心。.NET 对于 localhost 绕过代理,这是我在答案中提到的一个因素。 - EricLaw
7个回答

52

1
似乎原因已在此处解释:Microsoft 在其代码中插入了一个检查,如果是“localhost”,它们就会跳过代理,因此请求不会通过 Fiddler 进行。 - BornToCode

30

2
希望这能帮助你了解我迄今为止尝试过的内容。我已经尝试使用Fiddler,但它无法捕获由我的.NET控制台应用程序生成的任何流量,该应用程序使用HTTPClient类连接到在服务器上托管的服务,并使用自定义端口。- Dhruvin刚刚 - dhruvin
1
你需要阅读并遵循我提供的说明,或者提供更多关于问题的详细信息以及你已经尝试过的具体方法。每天都有成千上万的开发人员成功地捕获在你所描述的场景中的流量。 - EricLaw
嗨@Eric,我已经更新了我的问题,以更具体地描述我遇到的困境。希望这能澄清现在的问题。 - dhruvin
2
你还没有提供URL,但是通过我的心灵调试能力,我可以告诉你需要阅读这篇文章来解决你的问题:http://fiddlerbook.com/fiddler/help/hookup.asp#Q-LocalTraffic。 - EricLaw
检查一下 Fiddler 中的过滤器也是值得的。在意识到错误之前,我浪费了太长时间来解决这个问题。 - ilivewithian

16

IIS不使用Internet选项中的代理设置,因为它在不同的用户身份下运行(默认为)。@EricLaw就捕获IIS/ASP.NET流量的问题提供了很好的指示

我不配置IIS使用我的登录帐户,而是编辑以强制HTTPClient使用代理,如下所示。

<configuration>
  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
      <proxy proxyaddress="http://127.0.0.1:8888"/>
    </defaultProxy>
  </system.net>
</configuration>

这里是MSDN上的使用详情


4
如果.NET应用程序在您当前的用户帐户中运行,请在配置部分内添加以下内容:
<configuration>
 <system.net>
  <defaultProxy>
   <proxy bypassonlocal="false" usesystemdefault="true" />
  </defaultProxy>
 </system.net>
</configuration>

注意: 重要提示: 不管其他设置如何,.NET总是会忽略包含localhost的URL的Fiddler代理。 因此,不要使用localhost,而应将您的代码更改为引用计算机名称。例如:

这个URL不会出现在Fiddler中:

http://localhost/X509SignCodeService/X509SigningService.asmx

这个URL将会出现在Fiddler中:

http://mymachine/X509SignCodeService/X509SigningService.asmx


2

对于那些遇到.NET Core应用程序问题并使用Fiddler的人(应该也适用于其他工具,但我没有检查过),您需要知道Fiddler侦听的端口:Fiddler Everywhere Settings Modal然后以管理员身份在Windows上运行:

netsh winhttp set proxy 127.0.0.1:<the port>

要取消代理,请运行以下命令:

netsh winhttp reset proxy

您可以在这里找到智慧的源泉(链接)。适用于本地主机。

0

“专门为此目的构建”,我认为应该明确指出它并不是专门为解决Fiddler问题而构建的,而是为了提供一种替代方法来跟踪调用并向开发人员公开HTTP元数据。 - Jon Davis

-1
所有对IIS的请求都会被记录在日志目录中(IIS管理器 > IIS服务器 > 日志记录) 默认路径为: %SystemDrive%\inetpub\logs\LogFiles

每条记录的末尾都会显示请求的状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接