问题标签 [servicepoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

c# - 禁用在 HttpWebRequests 之间重用 ServicePoint

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

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

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

帮助表示赞赏

0 投票
1 回答
778 浏览

.net - 为什么 dotnet keepalive Http 连接在第二个请求上失败,并显示“预期保持活动状态的连接已被服务器关闭。”?

我有一个 dotnet 框架应用程序,它对运行 Apache 的远程服务器执行 POST api 请求。它间歇性地失败并出现以下错误:

当通过保活 TLS 连接完成对服务器的第二次请求时,这种情况会发生,因此在负载较重的生产系统中发生的频率更高,而在开发环境中发生的频率较低或根本不发生。

我们尝试过:

  • 禁用Expect: 100-Continue标头行为 ( ServicePoint.Expect100Continue = false)
  • 启用 TCP 保持活动 ( ServicePoint.SetTcpKeepAlive())

禁用 HTTP keep-alive 似乎可以解决该问题。( HttpWebRequest.KeepAlive = false)

有没有办法在不禁用http keep-alive的情况下解决这个问题?