为什么WebProxy BypassProxyOnLocal不会为我工作?

Gre*_*reg 3 .net c# httpwebrequest webproxy

我正在尝试从C#.NET获取HTTP调用到本地地址(localhost:3000)以使用我设置的代理(因此我可以通过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;
Run Code Online (Sandbox Code Playgroud)

然而,后续调用不会通过代理,例如当我执行时:

 var res = (HttpWebResponse)req.GetResponse();
Run Code Online (Sandbox Code Playgroud)

谢谢

Lee*_*cis 7

我只是通过向localhost附加一个"点"来解决这个问题,因此我尝试访问"localhost"而不是访问"localhost".(注意主机名末尾的点)

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

工作良好!


aKz*_*enT 5

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

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

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