为什么Fiddler看不到我的Web服务流量?

14

我遇到了一个问题,就是 Fiddler 没有显示从我的应用程序(本地运行)发出的 Web 服务调用。我找到并解决了这个问题。 我找到解决了 我的问题。

那么我的问题不是如何解决,而是为什么 Fiddler 不显示 Web 服务流量?我对网络流量的理解非常有限,所以这可能很简单/明显。我能够理解的只有:

  1. 我认为这与 HTTPS 无关,因为我可以通过 Fiddler 的设置(如果需要解码)查看 HTTPS 请求。

  2. 我复制了一段代码 new WebProxy("127.0.0.1", 8888); 以使其正常工作,所以这一定与代理有关吗?

这是一个 ASP.NET 应用程序,如果有区别,请说明。


这似乎与这个问题非常相关: https://dev59.com/fXVC5IYBdhLWcg3wsTRi 由于您有本地代理,Fiddler忽略了您的流量。您可以按照上面的链接来解决它。 - Hongzheng
可能是重复的问题:如何让Fiddler不再忽略本地主机的流量? - 这个答案:https://dev59.com/fXVC5IYBdhLWcg3wsTRi#842630 解释了原因。 - Kev
基于此,我有一个对第三方托管服务的服务引用。因此,Web服务不是本地主机或以任何方式本地化,它绝对是出站通信。这会有所不同吗?似乎答案与本地Web服务调用有关。 - Chris
2
这可能会有所帮助:http://fiddler2.com/blog/blog/2013/01/08/capturing-traffic-from-.net-services-with-fiddler - Kev
Fiddler是一个代理工具;它只能看到发送给它的内容。默认情况下,这包括在您的用户帐户中运行的大多数客户端(例如浏览器)。而IIS/ASP.NET则在不同的用户帐户中运行。 - EricLaw
@Kev 那第一段就是我需要的解释:“当Fiddler启动并附加时,它会调整当前用户的代理设置,将其指向默认情况下运行在127.0.0.1:8888上的Fiddler。这意味着大多数应用程序的流量都会自动通过Fiddler流动,无需任何其他配置步骤。”虽然我想我也应该感谢Eric,因为他似乎是写这篇文章的人! - Chris
3个回答

26

虽然这是一个很老的问题,但:

尽管答案和评论提供了正确的解决方案,但它们离解决问题还有很大差距。

Fiddler只能查看你的用户账户的流量。由于应用程序池标识运行Web服务,所以Fiddler无法查看它们的流量。

最简单的解决方法(也是我唯一有效的方法)是将网站应用程序池用户更改为使用您的帐户运行

步骤如下:

  1. 打开IIS
  2. 找到您的网站应用程序池名称(右键单击网站->管理网站->高级设置->列在应用程序池下)
  3. 进入应用程序池高级设置(应用程序池->右键单击所需的应用程序池->高级设置)
  4. 将用户帐户更改为您的帐户(标识->...->自定义帐户->设置)

1
Fiddler似乎默认记录已登录用户的流量,而不管“Run As…”如何设置,因此如果您的服务运行的用户与已登录用户不同,则无法看到该流量。 - Coruscate5
如果你看到了“指定的密码无效。请输入一个新密码”的提示,请参考 https://dev59.com/T2w05IYBdhLWcg3w9mnd#22613122。 - Elliott Beach

4

如上所述:

第一段是我需要的解释:当Fiddler启动并附加时,它会调整当前用户的代理设置,将其指向默认情况下运行在127.0.0.1:8888上的Fiddler。这意味着大多数应用程序的流量会自动通过Fiddler流动,无需任何其他配置步骤。虽然我猜我还应该感谢Eric,因为他似乎是写这个东西的人!

参考资料


1
在配置文件中添加以下内容也是一种解决方案。
 <system.net>
  <defaultProxy enabled = "true">
    <proxy bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>

此外,如果来自Web服务的流量指向同一本地主机中的另一个应用程序,请尝试在请求URL中使用机器名称而非localhost

2
我在其他地方找到了这个解决方案并尝试跟随它。似乎这个部分的模式已经改变,或者我无法弄清如何将其集成到当前的 <section /> 标记中。这是现有的标记:<section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> - Zakk Diaz
1
如果您正在使用ASP.NET,这就是正确答案。 - MateusBello

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