我已经搜索了如何使用BindIPEndPointDelegate来改变我的HttpWebRequest的源端口。我发现了很多关于这个的帖子:
Here and Here
然而,它似乎不适合我。我在这个人身上发现了同样的问题:在Visual Studio 2010中定义SOAP Web服务的出站/呼叫端口
基本上,我想改变我的源端口时连接到一个网页。BindIPEndPointDelegate非常简单。
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.ServicePoint.BindIPEndPointDelegate = (servicePoint, remoteEp, retryCount) =>
{
return new IPEndPoint(IPAddress.Any, 8086);
};
当我查看使用netstat -n的连接时,我期望看到myipaddress:8086作为源IP和目的IP:80。我在netstat中看到的是,它正在用我指定的端口创建一个环回(127.0.0.1:8086)。参见netstat -n
的屏幕截图因为这是我的第一个帖子,我不能发布图片。可以在这里找到图片
为什么BindIPEndPointDelegate创建一个循环回连接,我怎么能得到我的WebRequest行为像浏览器与我指定的端口?
我用的是win7 Pro,没有本地防火墙,没有通过代理。
我今天遇到了类似的问题。我在BindIPEndPointDelegate中选择了一个特定的源端口,但是在WireShark中,我总是看到一个与我选择的不同的源端口。然后我发现我通过使用Fiddler2 Web调试器隐式地使用了代理。一旦我关闭了Fiddler,我就开始在WireShark中看到我在Bind委托中请求的源端口号。
结果是,如果您在任何地方有一个代理,您可能会看到相同的行为。