3

我正在尝试从 C# .NET 向本地地址 (localhost:3000) 进行 HTTP 调用,以使用我设置的代理(这样我就可以通过 fiddler)。如果我将目标 URL 指向非本地地址,则使用下面的 WebProxy 方法有效,但是我需要将它指向我拥有的本地 Web 服务器(在 localhost:3000),并且当我这样做时,请求不会通过代理。

我已经包含了“proxyObject.BypassProxyOnLocal = false”。这应该使它工作不?关于如何强制请求通过 WebProxy 进行针对本地地址的 http 调用的任何建议?

    WebProxy proxyObject = new WebProxy("http://localhost:8888/", false);
    proxyObject.Credentials = new NetworkCredential(); 
    proxyObject.BypassProxyOnLocal = false;
    WebRequest.DefaultWebProxy = proxyObject;

    var request = (HttpWebRequest)WebRequest.Create(targetUri);

    // I also included this line as a double check
    request.Proxy = proxyObject;

但是,后续调用不会通过代理,例如当我这样做时:

 var res = (HttpWebResponse)req.GetResponse();

谢谢

4

2 回答 2

8

我只是通过在 localhost 上附加一个“点”来解决这个问题,所以我没有访问“localhost”,而是尝试访问“localhost”。(注意主机名末尾的点)

信用应得的信用:我从这个线程http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-得到了这个不寻常的提示HTTP 客户端和 WCF 代理#596591

工作正常!

于 2011-08-18T05:57:07.880 回答
5

请参阅https://docs.telerik.com/fiddler/observe-traffic/troubleshooting/notraffictolocalhost上的说明

Internet Explorer 和 .NET Framework 被硬编码为不通过任何代理发送对 Localhost 的请求,并且作为代理,Fiddler 不会接收此类流量。

最简单的解决方法是使用您的机器名称作为主机名,而不是使用 Localhost 或 127.0.0.1。因此,例如,与其访问 http://localhost:8081/mytestpage.aspx,不如访问 http://machinename:8081/mytestpage.aspx。

于 2011-04-29T11:49:20.933 回答