gpt4 book ai didi

c# - 如何禁用 ASP.NET Web 服务客户端请求的保持事件状态?

转载 作者:太空狗 更新时间:2023-10-29 20:15:14 24 4
gpt4 key购买 nike

我在 Amazon EC2 负载均衡器后面有几台网络服务器。我在端口 80 上使用 TCP 平衡(而不是 HTTP 平衡)。

我有一个客户端每隔几秒轮询一次 Web 服务(在所有 Web 服务器上运行)以获取新项目。但是,客户端似乎始终连接到一台服务器并且每次都轮询同一台服务器。

我试过使用 ServicePointManager 来禁用 KeepAlive,但这并没有改变任何东西。传出连接仍然有它的“connection: keep-alive”HTTP header ,并且服务器保持 TCP 连接打开。我还尝试将 GetWebRequest 的覆盖添加到 VS 创建的代理类,它继承自 SoapHttpClientProtocol,但我仍然看到保持事件 header 。

如果我终止客户端的进程并重新启动,它将通过负载均衡器连接到新服务器,但它会永远继续轮询该新服务器。

有没有办法强制它每次都连接到随机服务器?我希望来自一个客户端的负载分布在所有 Web 服务器上。

客户端是用 C# 编写的(服务器也是如此)并使用指向负载均衡器的 Web 引用(而不是服务引用)。

最佳答案

没有覆盖 GetWebRequest方法工作:

protected override WebRequest GetWebRequest(Uri uri)
{
var webRequest = (HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}

关于c# - 如何禁用 ASP.NET Web 服务客户端请求的保持事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com