似乎无法让代理 HttpClient 的小提琴手



我一直在让fiddler获取自托管asp.net web api的流量方面遇到问题。我的情况可能有点不同,因为托管web api的同一个应用程序也在使用它(是的,我们有理由这样做:)。我们正在使用HttpClient。以下是我尝试过的东西:

  1. 添加HttpClientHandler并设置代理
  2. 将以下内容添加到app.config

    <system.net>
    <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://localhost:8888"/>
    </defaultProxy>
    

  3. 尝试从一个单独的.net客户端访问api(认为使用托管它的api的同一进程不允许捕获流量,因为它都是内部进程)。

现在,如果我在本地打开web浏览器或邮递员并点击api,那么流量将被正确捕获

这是客户端代码:

var handler = new HttpClientHandler();
handler.UseProxy = true;
handler.Proxy = new WebProxy("http://127.0.0.1",8888);
var client = new HttpClient(handler) {BaseAddress = new Uri(new Uri("http://localhost:8085"), "api/companies")};
HttpResponseMessage response;
using (client)
{
response = client.GetAsync(client.BaseAddress).Result;
}
var result = response.Content.ReadAsAsync<IEnumerable<Company>>().Result;

现在,理想情况下,我只想能够在运行的应用程序上打开fiddler并捕获流量(即使是在生产中),而无需更改源代码。

不幸的是,.NET Framework被硬编码为绕过Localhost地址的代理(请参阅此处的功能请求:https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6359204-support-the-loopback-token-in-proxy-bypass-lists)

要解决此问题,请将您的请求URL从http://localhost:8085更改为http://localhost.fiddler:8085,Fiddler将接收请求。

最新更新