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