Fiddler 没有看到来自 C# HttpClient() 的 API 调用
Fiddler not seeing API calls from C# HttpClient()
我有一个 ASP.NET MVC 网站正在调用 Web API 网络服务。
调用正常,return 200 正常 - 在我的本地计算机和 Web 服务器上都调用了 Web 服务。
我有 Fiddler 运行 但它没有看到这些调用 - 只调用了 MVC 网站(它又调用了网络服务)。
如何查看实际的网络服务调用?
这应该行得通吧?特别是基于网络的网络服务。
我已经停止引用 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 作为网络代理来让您的网站使用 Fiddler(使用您的 Fiddler 使用的端口):
<configuration>
...
<system.net>
<defaultProxy>
<proxy proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
...
</configuration>
参考文献:
- Debugging Http or Web Services Calls from ASP.NET with Fiddler
- Capturing Traffic from .NET Services with Fiddler
如 BornToCode 所述,也可以将应用程序池标识更改为当前用户。
确保您是 运行 Fiddler 作为管理员。
我添加 .fiddler 以便捕获请求,示例:
http://localhost.fiddler:59846
参考:
https://docs.telerik.com/fiddler-everywhere/knowledge-base/capturing-localhost-traffic
我有一个 ASP.NET MVC 网站正在调用 Web API 网络服务。
调用正常,return 200 正常 - 在我的本地计算机和 Web 服务器上都调用了 Web 服务。
我有 Fiddler 运行 但它没有看到这些调用 - 只调用了 MVC 网站(它又调用了网络服务)。
如何查看实际的网络服务调用?
这应该行得通吧?特别是基于网络的网络服务。
我已经停止引用 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 作为网络代理来让您的网站使用 Fiddler(使用您的 Fiddler 使用的端口):
<configuration>
...
<system.net>
<defaultProxy>
<proxy proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
...
</configuration>
参考文献:
- Debugging Http or Web Services Calls from ASP.NET with Fiddler
- Capturing Traffic from .NET Services with Fiddler
如 BornToCode 所述,也可以将应用程序池标识更改为当前用户。
确保您是 运行 Fiddler 作为管理员。
我添加 .fiddler 以便捕获请求,示例:
http://localhost.fiddler:59846
参考:
https://docs.telerik.com/fiddler-everywhere/knowledge-base/capturing-localhost-traffic