使用 BindIPEndPointDelegate 指定源端口似乎不起作用



我已经搜索了如何使用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委托中请求的源端口号。

结果是,如果您在任何地方有一个代理,您可能会看到相同的行为。

最新更新