Правильный способ навсегда установить свойства в ServicePoint

Я бы хотел отключить алгоритм Nagle для определенного соединения (в моем случае - для сервера ElasticSearch).

Мой код в настоящее время выглядит примерно так:

ServicePointManager.FindServicePoint(new Uri(uriWithoutLocalPath)).UseNagleAlgorithm = false;

Проблема в том, что ServicePoint объект перерабатывается через некоторое время, что приводит к потере настройки. Поэтому я не могу просто запустить этот код один раз при запуске системы. Казалось бы, у меня есть несколько вариантов передо мной:

  1. Глобально отключите алгоритм Nagle (следовательно, влияя на соединения, которые я не хочу затрагивать).
  2. Увеличьте MaxServicePointIdleTime, чтобы ServicePoint никогда не перерабатывается (вероятно, плохая идея? Моя интуиция говорит мне об этом).
  3. Установите какой-то таймер, который сбрасывает свойства каждые N секунд, где N меньше, чем время перезарядки для ServicePoint,
  4. Сбрасывайте свойства каждый раз, когда я использую соединение.

Мне не очень нравятся какие-либо из этих опций, они либо влияют на другие вещи в системе, либо кажутся слишком сложными для того, что я хочу сделать (например, опция таймера). Мне кажется, что для этого должно быть простое решение. Идеи?

0 ответов

Другие вопросы по тегам