Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用fiddler或任何其他工具跟踪HttpClient请求?_C#_C# 4.0_Httpclient_Fiddler - Fatal编程技术网

C# 如何使用fiddler或任何其他工具跟踪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客户

我使用HttpClient向一个我无权访问的web api服务发送请求,我需要跟踪从我的客户端到服务器的实际请求流。 有没有办法让小提琴手听我的请求

我正在使用System.Net.Http.HttpClient类发送请求

更新:试图改善这个问题,因为我现在无法得到我想要的。
我正在使用.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的请求都记录在日志目录中(IIS管理器>IIS服务器>日志) 默认值为: %SystemDrive%\inetpub\logs\LogFiles


在行的末尾有请求的状态。

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