C# 如何使用fiddler或任何其他工具跟踪HttpClient请求?
我使用HttpClient向一个我无权访问的web api服务发送请求,我需要跟踪从我的客户端到服务器的实际请求流。 有没有办法让小提琴手听我的请求 我正在使用System.Net.Http.HttpClient类发送请求 更新:试图改善这个问题,因为我现在无法得到我想要的。C# 如何使用fiddler或任何其他工具跟踪HttpClient请求?,c#,c#-4.0,httpclient,fiddler,C#,C# 4.0,Httpclient,Fiddler,我使用HttpClient向一个我无权访问的web api服务发送请求,我需要跟踪从我的客户端到服务器的实际请求流。 有没有办法让小提琴手听我的请求 我正在使用System.Net.Http.HttpClient类发送请求 更新:试图改善这个问题,因为我现在无法得到我想要的。 我正在使用.Net客户端应用程序通过HTTP通道连接到托管在我自己的IIS上的Web服务。早些时候,我用我的IIS上的一个网站进行了fiddler调试,并观察了我的浏览器和网站之间产生的流量。但是,当涉及到观看.Net客户
我正在使用.Net客户端应用程序通过HTTP通道连接到托管在我自己的IIS上的Web服务。早些时候,我用我的IIS上的一个网站进行了fiddler调试,并观察了我的浏览器和网站之间产生的流量。但是,当涉及到观看.Net客户端程序使用HttpClient类与web服务通信时,奇怪的是,fiddler似乎无法利用该通信量,并且没有显示任何内容。Net HttpClient是否绕过WinInet API连接到导致fiddler无法监视流量的服务 一般来说,只需在应用程序足够之前启动Fiddler即可。你还没有解释到目前为止你做了什么
- 如果它不起作用,请阅读:
- 如果目标URL为localhost或127.0.0.1,请阅读:
- 如果代码在IIS或ASP.NET中运行,请阅读:
在行的末尾有请求的状态。IIS不使用Internet中的代理设置选项,因为它在不同的用户标识下运行(默认值为
ApplicationPoolIdentity
)@EricLaw提供了一个关于捕获IIS/ASP.NET流量问题的解决方案
我没有将IIS配置为使用我的登录帐户,而是编辑web.config
以强制HTTPClient使用代理,如下所示
<configuration>
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy proxyaddress="http://127.0.0.1:8888"/>
</defaultProxy>
</system.net>
</configuration>
以下是.如果您使用类似“将其更改为”的url进行连接,则来自HttpClient的请求应在Fiddler中可见。如果.NET应用程序正在您的当前用户帐户中运行,请在“配置”部分中添加以下内容:
<configuration>
<system.net>
<defaultProxy>
<proxy bypassonlocal="false" usesystemdefault="true" />
</defaultProxy>
</system.net>
</configuration>
注意:重要提示:无论其他设置如何,.NET将始终绕过包含localhost的URL的Fiddler代理。因此,不要使用localhost,而是更改代码以引用机器名。例如:
此URL不会出现在Fiddler中:
此URL将出现在Fiddler中:
使用。您不需要配置代理,只需将处理程序的实例传递到HttpClient中即可:
newHttpClient(newHttpTracerHandler())
。试一试,它对我们Xamarin方面以及ASP.NET中的S2S目的来说都是非常宝贵的。对于那些在.NET核心应用程序和Fiddler上有同样问题的人来说(应该也适用于其他工具,但还没有检查)
您需要知道端口小提琴手正在收听:
然后运行(作为Windows上的管理员):
你可以找到智慧的源泉。
与localhost合作。我希望这将有助于了解到目前为止我所做的尝试。我已经尝试过使用fiddler,但它没有捕获从我的.net控制台应用程序生成的任何流量,该应用程序正在使用HTTPClient类访问服务器上的自定义端口上托管的服务dhruvin刚才您需要阅读并遵循我提供的说明,或者提供更多关于问题的详细信息以及您具体尝试的内容。成千上万的开发人员成功地捕获了您每天描述的场景中的流量。嗨@Eric,我已经更新了我的问题,以便在我遇到问题的场景中更加具体。希望这有助于澄清问题。你还没有提供URL,但使用我的心灵调试功能,我可以告诉你,你需要阅读以下内容:解决你的问题。在fiddler中检查你的过滤器也是值得的。在意识到我的错误之前,我浪费了太多时间来处理这个问题。NET不使用WinINET,Fiddler也不在乎。NET确实绕过了localhost的代理,这是我在回答中提到的一个因素。原因似乎已经解释清楚了——微软在他们的代码中插入了一个检查,如果是“localhost”,他们只是跳过代理,这样请求就不会通过fiddler.by“专门为此目的而构建”,我认为应该明确的是,它不是专门为解决Fiddler问题而构建的,而是为跟踪调用和向开发人员公开HTTP元数据提供了一种替代方法
netsh winhttp set proxy 127.0.0.1:<the port>
netsh winhttp reset proxy