【问题标题】:Can't Get Fiddler to Capture local traffic to IIS无法让 Fiddler 捕获到 IIS 的本地流量
【发布时间】:2013-06-07 22:55:16
【问题描述】:

我最近安装了最新的 Fiddler (Fiddler4),但我绝对没有尝试让它捕获本地流量。我有一个 MVC 应用程序,它连接到在 IIS 上运行的 MVC WebApi 应用程序,这是我尝试过的:

  • Fiddler 选项 > 连接 > 监控所有连接并使用 PAC 脚本
  • 将 WebClient C# 调用更改为使用以下 URL,但未成功:
  • 将 IIS 中的“默认网站”更改为在使用我的本地帐户的新 AppPool 下运行,并以管理员身份运行 Fiddler
  • 已将 <system.net> <defaultProxy> <proxy bypassonlocal="False" usesystemdefault="True" /> </defaultProxy> </system.net> 添加到我的 MVC 应用程序的 web.config 中。

没有任何效果,我不知道该尝试什么。任何意见是极大的赞赏。 谢谢, 肖恩

【问题讨论】:

  • 你不能捕捉到什么?从您的浏览器到 MVC 应用程序的请求、MVC 应用程序执行的 Web API 调用还是两者兼而有之?应用程序是如何托管的?您是否尝试过将 Fiddler 代理地址明确指定为 &lt;proxy proxyaddress="127.0.0.1:8888" /&gt;
  • 您好 CodeCaster,我正在尝试捕获来自 MVC 应用程序的 Web API 调用,而不是到 MVC 应用程序的浏览器流量。这两个应用程序都作为虚拟应用程序托管在默认网站下的 IIS 中。我在 web.config 中更改的唯一代理设置是上面的。
  • 我的问题实际上是一个建议。
  • 在 web.config 中也添加 fiddler 代理地址,例如...... 127.0.0.1:8888">

标签: c# asp.net iis fiddler


【解决方案1】:

原来我需要将 Fiddler 设置为反向代理 (http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy)。我真的不明白为什么在我从 Fiddler2 升级到 Fiddler4 之前我不必这样做。我以前只能使用http://ipv4.localhost/app-name 并且一切正常。不过,为了让它与 Fiddler4 一起工作,我设置了反向代理,然后将我的所有请求从 http://ipv4.localhost/app-name 更改为 http://machinename:8888/app-name。我现在可以收听应用程序间的通信。知道为什么我不必对 Fiddler2 执行此操作,但现在升级到 Fiddler4 后我必须这样做吗?

【讨论】:

  • Fiddler2 和 Fiddler4 在这方面完全没有区别。你的环境中的其他东西发生了变化。 (您确定您没有设置过滤器吗?帮助 > 过滤器疑难解答)
  • "Fiddler2 和 Fiddler4 之间绝对没有什么不同" ..so 。为什么一个有效而另一个无效,
【解决方案2】:

我知道你在你的 OP 中提到了这一点,但这对我有用,而且做起来超级简单,所以我想我会分享一下,以防其他人遇到同样的问题并且不想经历设置的麻烦如果他们不需要,请建立一个反向代理。


我只需更改要检查其流量的 IIS 应用程序池以在我的身份下运行即可实现此功能,因为默认情况下 Fiddler 似乎只捕获登录用户的流量。只需确保您的用户拥有 IIS 所需的所有必要权限即可;我是管理员,所以这对我来说不是问题。当然,完成后不要忘记将 IIS 应用程序池标识改回来。

当然,另一种选择是以运行 IIS 应用程序池的用户身份登录(如果它不是像 Network Service 这样的服务帐户),然后在以其他用户身份登录时运行 Fiddler。

【讨论】:

  • 这是最简单的方法
  • 太棒了!设置反向代理很麻烦,这要容易得多。
【解决方案3】:

我知道捕获非 Webbrowser 流量的最简单可靠的解决方案是明确指定 Fiddler 的端口作为 Web 请求的代理。根据请求,您的代码正在使代码看起来类似于:

 request.Proxy = new WebProxy("127.0.0.1", 8888)

注意:不要忘记使用“Capturing”和“All Process”运行 Fiddler(在 Fiddler 的状态栏中可见)

【讨论】:

  • 我最终做了类似的事情,请参阅我的答案。事实证明,我没有将 Fiddler 设置为反向代理,而我需要这样做。知道为什么我必须使用 Fiddler4 执行此操作,但是当我使用 Fiddler2 时它无需额外配置即可工作?
【解决方案4】:

尝试在您的主机文件(c:\windows\system32\drivers\etc\hosts)中添加一条记录,例如:

127.0.0.1   mysite.local

然后,您需要在 IIS 中的网站中进行绑定以进行匹配。

然后使用http://mysite.local/

【讨论】:

  • 在我得到你的答案之前我已经开始工作了,这看起来确实可行,但我还没有测试过。
【解决方案5】:

尝试使用http://machinename./page

即...尝试在机器名称后添加句点并浏览。

【讨论】:

  • 由于某种原因,当我尝试“.”时,IIS 返回 400 Bad request。
【解决方案6】:

我遇到了同样的问题。 通过修改 Web.config

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

【讨论】: