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

时间:2010-01-11 23:13:20

标签: c# .net 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;

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

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

感谢

3 个答案:

答案 0 :(得分:7)

我只是通过向localhost添加“dot”来解决这个问题,因此我尝试访问“localhost”而不是访问“localhost”。 (注意主机名末尾的点)

信用到期的信用: 我从这个帖子中获得了这个不寻常的提示http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET-HTTP-Clients-and-WCF-Proxies#596591

工作正常!

答案 1 :(得分:3)

请参阅http://www.fiddler2.com/fiddler/help/hookup.asp#Q-LocalTraffic

上的说明
  

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

     

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

答案 2 :(得分:0)