我有一台具有多个公共 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。我不确定这是否是导致此问题的原因,但我找不到禁用此行为的方法。
帮助表示赞赏