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

时间:2010-05-27 00:21:42

标签: c# fiddler

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

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

5 个答案:

答案 0 :(得分:35)

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

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

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:3)

当然,如果Fiddler不工作,那么总是Wireshark。作为提示,在Wireshark中使用几个过滤器(例如,仅显示去往或来自目标IP的数据包),以避免感觉您被数据溢出。

答案 3 :(得分:3)

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

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

答案 4 :(得分:-1)

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

此网址不会出现在Fiddler中:

http://localhost/X509SignCodeService/X509SigningService.asmx 此URL将显示在Fiddler中: