代码之家  ›  专栏  ›  技术社区  ›  Greg

为什么webproxy不绕过proxyonlocal为我工作?

  •  3
  • Greg  · 技术社区  · 15 年前

    我正在尝试从c.net向本地地址(localhost:3000)发出http调用,以使用我设置的代理(这样我就可以通过fiddler)。如果我将目标url指向一个非本地地址,那么使用下面的web proxy方法是可行的,但是我需要将它指向我拥有的本地web服务器(localhost:3000),并且当我这样做时,请求不会经过代理。

    我已经包含了“proxyobject.bypassproxyonlocal=false”。这能让它工作不?对于如何强制请求通过针对本地地址的http调用的webproxy,有何建议?

        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 回复  |  直到 13 年前
        1
  •  7
  •   Lee Francis    13 年前

    我只需在localhost后面加上一个“点”就可以解决这个问题,所以我尝试访问“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

    很好用!

        2
  •  3
  •   aKzenT    14 年前

    参见解释 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 .