Правильный способ навсегда установить свойства в ServicePoint
Я бы хотел отключить алгоритм Nagle для определенного соединения (в моем случае - для сервера ElasticSearch).
Мой код в настоящее время выглядит примерно так:
ServicePointManager.FindServicePoint(new Uri(uriWithoutLocalPath)).UseNagleAlgorithm = false;
Проблема в том, что ServicePoint
объект перерабатывается через некоторое время, что приводит к потере настройки. Поэтому я не могу просто запустить этот код один раз при запуске системы. Казалось бы, у меня есть несколько вариантов передо мной:
- Глобально отключите алгоритм Nagle (следовательно, влияя на соединения, которые я не хочу затрагивать).
- Увеличьте MaxServicePointIdleTime, чтобы
ServicePoint
никогда не перерабатывается (вероятно, плохая идея? Моя интуиция говорит мне об этом). - Установите какой-то таймер, который сбрасывает свойства каждые N секунд, где N меньше, чем время перезарядки для
ServicePoint
, - Сбрасывайте свойства каждый раз, когда я использую соединение.
Мне не очень нравятся какие-либо из этих опций, они либо влияют на другие вещи в системе, либо кажутся слишком сложными для того, что я хочу сделать (например, опция таймера). Мне кажется, что для этого должно быть простое решение. Идеи?