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

时间:2015-09-30 05:25:15

标签: c# servicepoint servicepointmanager

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

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

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

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

  1. 全局关闭Nagle算法(因此影响我不想影响的连接)。
  2. 增加MaxServicePointIdleTime,以便ServicePoint永远不会被回收(可能是一个坏主意?我的直觉告诉了我)。
  3. 设置某种计时器,每隔N秒重置一次属性,其中N小于ServicePoint的回收时间。
  4. 每次使用连接时重置属性。
  5. 我真的不喜欢这些选项中的任何一个,它们会影响系统中的其他内容,或者对于我想要做的事情看起来太复杂(比如计时器选项)。在我看来,应该有一个简单的解决方案。想法?

0 个答案:

没有答案
相关问题