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)
谢谢
我只是通过向localhost附加一个"点"来解决这个问题,因此我尝试访问"localhost"而不是访问"localhost".(注意主机名末尾的点)
信用到期的信用:我从这个帖子得到了这个不寻常的提示http://www.west-wind.com/weblog/posts/2009/Jan/14/Monitoring-HTTP-Output-with-Fiddler-in-NET- HTTP的客户端,和WCF的代理#596591
工作良好!
请参阅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。