有没有办法配置Fiddler拦截来自Windows服务的HTTP调用?

我们正在更换使用VS2005构建的旧(5年以上)Windows服务应用程序,该应用程序进行HTTP GET调用。 有几件事情使这很困难(比如网络服务器在客户的网络上,我们无法直接连接到它),不幸的是,我们不想取消正在运行的系统来用WinForm取代它Fiddler可以监控的版本。 新代码似乎正在正确地执行所有操作,但是,唉,它无法进行身份validation。

有没有办法配置Fiddler(2.2.9.1)来拦截来自Windows服务的HTTP调用?

Codeka提供了一条线索,让我朝着正确的方向前进。 仍然缺少的部分是如何配置代理。 .exe.config需要添加如下所示的部分:

      

完成此操作后,Windows服务的http流量开始流经Fiddler。

Fiddler只是充当HTTP代理,因此如果您可以在服务中配置代理,那么您可以将其配置为通过Fiddler。 是否可能很难说…

如果这不起作用,您可以通过在第二台计算机上运行Fiddler并将其配置为在端口80上侦听来执行此操作。然后在“测试”计算机上编辑主机文件,使其指向第二台计算机。 所以说网络服务在www.example.com上,你设置你的测试服务器,以便“www.example.com”指向你的第二台计算机(运行Fiddler)。 然后,当服务连接到“www.example.com”时,它实际上将连接到Fiddler。 然后,Fiddler会在记录请求/响应后将连接转发到真实的 http://www.example.com。

我没有测试过上面的内容,但我认为它会起作用。 显然,如果您可以在服务中配置更容易的代理设置!

而且,当然,如果Fiddler不起作用,总会有Wireshark 。 作为提示,在Wireshark中使用几个filter(例如,仅显示去往或来自目标IP的数据包),以避免感觉您被数据溢出。

由于.NET绕过localhost和127.0.0.1的代理,只需硬编码您的机器名称,而不是您正在测试的URL。

 //myUrl = "http://127.0.0.1/myservice"; myUrl = "http://mymachine/myservice"; 

注意:重要说明:无论其他设置如何,.NET始终会绕过包含localhost的URL的Fiddler代理。 因此,不要使用localhost,而是更改代码以引用计算机名称。 例如:

此URL不会出现在Fiddler中:

http://localhost/X509SignCodeService/X509SigningService.asmx此URL将出现在Fiddler中: