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

nii*_*ico 7 c# fiddler dotnet-httpclient

我有一个ASP.NET MVC网站,它正在调用Web API Web服务.

这些调用正在运行并返回200 OK - 两者都调用本地计算机上的Web服务和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);
}
Run Code Online (Sandbox Code Playgroud)

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

Nin*_*rry 9

当您启动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>
Run Code Online (Sandbox Code Playgroud)

参考文献:


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

  • 如果您不想弄乱 web.config,您可以将应用程序池标识更改为当前用户,它也可以工作。感谢您的精彩回答,因为我从来没有意识到 fiddler 仅为当前 Windows 用户设置。 (2认同)