如何在调试ASP.NET应用程序时,在Fiddler中显示本地主机流量?

80

当我调试ASP.NET应用程序时,如何在Fiddler中显示本地主机流量?


2
从IE9开始,不需要任何特殊技巧。http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx - EricLaw
14个回答

88

注意:这仅适用于IE,仅限于IE8及更早版本。 <= IE8非常聪明,它知道您不想为本地流量使用代理服务器!因此,当您的url中出现“localhost”时,它不会理会您愚蠢的代理服务器设置,这就是Fiddler挂钩的方式。 - Scott Stafford

52

要使 Fiddler 在使用 IIS Express 的情况下能够工作,您应该使用以下形式的 URL。

http://localhost.fiddler:50262/

这将设置正确的主机标头值(localhost),满足IIS Express的要求。


这对我非常有效,我试图从在Visual Studio/IIS Express下运行的测试站点中使用Excel OData数据源导入。 - Keith Hill
我一直在苦苦思索,但这对我也非常有效!谢谢! - sǝɯɐſ
这适用于本地托管的IIS Express Asp.net Web API。干杯。 - Raghu

20

打开 Fiddler。 转到 工具--> Fiddler 选项。 选择 连接 选项卡。 勾选 “使用 PAC 脚本” 选项。

现在,您将能够监视本地流量。


1
我在添加SSL时遇到了问题,因为我们公司的代理设置,但更改此设置解决了问题。谢谢! - AlignedDev

12

针对ASP.NET网站项目:

1) 右键单击项目并选择“属性页面”
2) 选择“启动选项”
3) 在服务器部分下,点击“使用自定义服务器”并编辑基本URL,将localhost替换为您计算机的名称。


7

监控本地主机流量最简单的方法可能是在浏览器的URL栏中将"localhost"替换为"localhost."。例如:

http://localhost./MyApp/default.aspx

4

使用Fiddler v4:

  1. 检查IE代理设置

IE->工具->Internet选项->连接->LAN设置

IE Lan Settings

  1. 检查Fiddler的设置:

Fiddler -> 选项-> 连接和Https

检查Fiddler端口,默认为8888 Fiddler port

  1. 在Fiddler菜单中:

文件 -> 捕获流量 被勾选

以下解决方案适用于我在ASP.NET应用程序内部使用HttpClient或WebClient时遇到的问题。

Web.config

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

代码:

var resourceServerUri = new Uri("http://localhost.fiddler:YourAppServicePort");
var body = c.GetStringAsync(new Uri(resourceServerUri)).Result;



通过自定义Fiddler Rules脚本检查您的请求是否实际到达fiddler

Fiddler->Rules->Customize Rules

并钩入OnBeforeRequest事件:

static function OnBeforeRequest(oSession: Session) {

if (oSession.hostname.Contains("localhost:YourPortNumber")
{
 System.Windows.Forms.MessageBox.Show(oSession.hostname);  
} 

或者通过设置web代理来明确指定

WebClient wc = new WebClient();

WebProxy proxy = new WebProxy();
// try one of these URIs
proxy.Address = new Uri("http://127.0.0.1:8888");
proxy.Address = new Uri("http://hostname:8888");
proxy.Address = new Uri("http://localhost.fiddler");
proxy.Address = new Uri("http://ipv4.fiddler");
// https://en.wikipedia.org/wiki/IPv6
proxy.Address = new Uri("http://ipv6.fiddler");

proxy.BypassProxyOnLocal = false; wc.Proxy = proxy;
var b = wc.DownloadString(new Uri(YourResourceServerBaseAddress));

3

我尝试了那种方法,它提示我输入IE凭据弹出框。我输入我的AD用户凭据,但是得到了HTTP 401.1登录失败的错误。 - Michael Kniskern
我在博客文章的评论中提供了一个建议性答案。 - Michael Kniskern

3
在Fiddler选项 ->连接中勾选“使用PAC脚本”对于我在公司内部网络中使用IIS Express时有效。

不太确定发生了什么事,但我最近将 Fiddler 升级到 v4.6.2.2 版本后,勾选“使用 PAC 脚本”选项实际上会导致 Fiddler 停止工作。我不得不取消勾选该选项才能让事情重新正常运行... - David Norris-Hill

3

您可以使用PC主机名代替127.0.0.1或localhost


2

其中一个可能的解决方案是按照以下步骤在IE中删除代理设置。

       IE->Tools->Internet Options->Connections->Lan Settings->

禁用以下内容

  • 自动检测设置
  • 使用自动配置脚本

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