У меня есть несколько веб-серверов позади подсистемы балансировки нагрузки Amazon EC2. Я использую TCP, балансирующийся на порте 80 (а не балансировка HTTP).
У меня есть клиент, опрашивающий веб-сервис (работающий на всех веб-серверах) для новых объектов каждые несколько секунд. Однако клиент, кажется, остается на связи с одним сервером и опрашивает тот же самый сервер каждый раз.
Я попытался использовать ServicePointManager для отключения KeepAlive, но это ничего не изменило. Исходящее соединение все еще имело свое "соединение: активный" HTTP-заголовок и сервер сохранили соединение TCP открытым. Я также попытался добавить переопределение GetWebRequest к прокси-классу, созданному VS, который наследовался SoapHttpClientProtocol, но я все еще вижу активный заголовок.
Если я уничтожу процесс и перезапуск клиента, то он соединится с новым сервером через подсистему балансировки нагрузки, но он продолжит опрашивать тот новый сервер навсегда.
Существует ли способ вынудить это соединиться со случайным сервером каждый раз? Я хочу, чтобы загрузка от одного клиента была распространена через все веб-серверы.
Клиент записан в C# (как сервер), и использует веб-Ссылку (не Сервисная Ссылка), который указывает на подсистему балансировки нагрузки.
Не отменяет работу метода GetWebRequest :
protected override WebRequest GetWebRequest(Uri uri)
{
var webRequest = (HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}