【问题标题】:why won't WebProxy BypassProxyOnLocal work for me?为什么 WebProxy BypassProxyOnLocal 不适合我?
【发布时间】:2011-01-03 23:25:11
【问题描述】:

我正在尝试从 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();

谢谢

【问题讨论】:

标签: c# .net httpwebrequest webproxy


【解决方案1】:

我只是通过在 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 得到了这个不寻常的提示

工作正常!

【讨论】:

  • 忘记了这个技巧。仅在某些浏览器中需要。在 IE7 中为我工作得很好
【解决方案2】:

查看https://docs.telerik.com/fiddler/observe-traffic/troubleshooting/notraffictolocalhost的解释

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

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

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多