繁体   English   中英

Fiddler 看不到来自 C# HttpClient() 的 API 调用

[英]Fiddler not seeing API calls from C# HttpClient()

我有一个调用 Web API Web 服务的 ASP.NET MVC 网站。

调用正在工作并返回 200 OK - 对本地计算机和 Web 服务器上的 Web 服务的调用。

我有 Fiddler 正在运行,但它没有看到这些调用 - 只调用了 MVC 网站(后者又调用了 Web 服务)。

如何查看实际的 Web 服务调用?

这应该可以正常工作吗? 尤其是基于 Web 的 Web 服务。

我已经停止引用http://localhost而是使用 MACHINENAME - 正如一些 SO 帖子中所推荐的那样。 但这没有帮助。

我正在使用 HttpClient 来调用它:

using (var client = new HttpClient())
{
    var byteArray = Encoding.ASCII.GetBytes(username + ":" + password);
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

    client.BaseAddress = new Uri("http://MACHINENAME");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var response = await client.PutAsJsonAsync("api/path", custImp);
}

如何在 Fiddler 中查看 Web 服务调用?

当您启动Fiddler时,它将更改当前Windows用户的默认系统代理,以便Fiddler捕获此用户发出的Web请求。

但是,该网站在IIS内部运行,并在不同的用户下运行。 您必须通过在MVC应用程序的web.config文件中明确指定Fiddler作为Web代理来使您的网站使用Fiddler(使用您的Fiddler使用的端口):

<configuration>
...
<system.net>
  <defaultProxy>
    <proxy  proxyaddress="http://127.0.0.1:8888" />      
  </defaultProxy>
</system.net>
...
</configuration>

参考文献:


正如BornToCode所提到的,也可以将应用程序池标识更改为当前用户。

确保您以管理员身份运行 Fiddler。

我添加 .fiddler 以便捕获请求,例如:

http://localhost.fiddler:59846

参考:
https://docs.telerik.com/fiddler-everywhere/knowledge-base/capturing-localhost-traffic

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM