在 ServicePoint 上永久设置属性的正确方法

Dor*_*oby 5 c# servicepoint servicepointmanager

我想关闭特定连接上的 Nagle 算法(在我的情况下 - 到 ElasticSearch 服务器)。

我的代码目前看起来像这样:

ServicePointManager.FindServicePoint(new Uri(uriWithoutLocalPath)).UseNagleAlgorithm = false;
Run Code Online (Sandbox Code Playgroud)

问题是ServicePoint对象在一段时间后被回收,导致它丢失设置。因此,我不能在系统启动时只运行一次此代码。看来我面前有几个选择:

  1. 全局关闭 Nagle 算法(因此,影响我不想影响的连接)。
  2. 增加MaxServicePointIdleTime,以便ServicePoint永远不会回收(可能是个坏主意?我的直觉告诉我)。
  3. 设置某种计时器,每 N 秒重置一次属性,其中 N 小于 a 的回收时间ServicePoint
  4. 每次使用连接时都重置属性。

我真的不喜欢这些选项中的任何一个,它们要么会影响系统中的其他东西,要么看起来对于我想要做的事情来说太复杂了(比如计时器选项)。在我看来,应该有一个简单的解决方案。想法?