0

我有一台具有多个公共 IP 地址的机器。我想发送 HTTP 请求,并手动控制源 IP 地址。为此,我使用 HttpWebRequest 类并覆盖 req.ServicePoint.BindIPEndPointDelegate

theRequest.ServicePoint.BindIPEndPointDelegate = (s, ep, retries) => {
    return new IPEndPoint(IPAddress.Parse(SourceIp), 0);
};

这适用于单个请求,但在尝试将多个请求发送到具有不同源 IP 地址的同一域时会失败。BindIPEndPointDelegate 只被调用一次(在第一个请求上),两个请求都使用第一个请求的源 IP。

经过一番研究,我找到了这个资源,指出如果方案和域相同,.Net 会重用 ServicePoints。我不确定这是否是导致此问题的原因,但我找不到禁用此行为的方法。

帮助表示赞赏

4

1 回答 1

0

解决方案是将 ServicePoint 属性的 MaxIdleTime 设置为 0。

于 2020-07-24T18:12:52.303 回答