Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET Web服务客户端请求上禁用保持活动?_C#_Asp.net_Web Services_Load Balancing_Keep Alive - Fatal编程技术网

C# 如何在ASP.NET Web服务客户端请求上禁用保持活动?

C# 如何在ASP.NET Web服务客户端请求上禁用保持活动?,c#,asp.net,web-services,load-balancing,keep-alive,C#,Asp.net,Web Services,Load Balancing,Keep Alive,我在AmazonEC2负载平衡器后面有一些web服务器。我在端口80上使用TCP平衡(而不是HTTP平衡) 我有一个客户端每隔几秒钟轮询一个Web服务(在所有Web服务器上运行)以查找新项目。但是,客户端似乎保持与一台服务器的连接,并且每次都轮询同一台服务器 我曾尝试使用ServicePointManager禁用KeepAlive,但这并没有改变任何事情。传出连接仍然有其“connection:keep alive”HTTP头,服务器保持TCP连接打开。我还尝试将GetWebRequest的覆盖

我在AmazonEC2负载平衡器后面有一些web服务器。我在端口80上使用TCP平衡(而不是HTTP平衡)

我有一个客户端每隔几秒钟轮询一个Web服务(在所有Web服务器上运行)以查找新项目。但是,客户端似乎保持与一台服务器的连接,并且每次都轮询同一台服务器

我曾尝试使用ServicePointManager禁用KeepAlive,但这并没有改变任何事情。传出连接仍然有其“connection:keep alive”HTTP头,服务器保持TCP连接打开。我还尝试将GetWebRequest的覆盖添加到VS创建的代理类中,该代理类继承自SoapHttpClientProtocol,但仍然可以看到keep-alive头

如果我关闭客户端进程并重新启动,它将通过负载平衡器连接到新服务器,但它将永远继续轮询新服务器

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

客户端使用C#(与服务器一样)编写,并使用指向负载平衡器的Web引用(而不是服务引用)。

没有覆盖该方法:

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

嗯,我试图重写GetWebRequest的尝试没有成功,重写将被调用,但keep alive仍将被设置。我只是一字不差地复制了你的方法,而且成功了!不知道我做了什么不同,但谢谢!也许您可以发布您的方法,以便我们可以查看它的错误。也可以尝试ServicePointManager.SetTcpKeepAlive(false,0,0);