[英]ServicePoint safety checks to prevent blocking on new HttpWebRequests
[英]Disable Reusing ServicePoint between HttpWebRequests
我有一台具有多个公共 Ip 地址的机器。 我想发送 HTTP 请求,并手动控制 Source IP 地址。 为此,我使用 HttpWebRequest Class 并覆盖 req.ServicePoint.BindIPEndPointDelegate
theRequest.ServicePoint.BindIPEndPointDelegate = (s, ep, retries) => {
return new IPEndPoint(IPAddress.Parse(SourceIp), 0);
};
这适用于单个请求,但在尝试将多个请求发送到具有不同源 IP 地址的同一域时失败。 BindIPEndPointDelegate 只调用一次(在第一个请求上),两个请求都使用第一个请求的源 IP。
经过一番研究,我找到了这个资源,指出如果方案和域相同,.Net 会重用 ServicePoints。 我不确定这是否是导致此问题的原因,但我找不到禁用此行为的方法。
帮助表示赞赏
解决方案是将 ServicePoint 属性的 MaxIdleTime 设置为 0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.