我有一个WPF应用程序使用和调整ServicePointManager上的ConnecitonLimit。来自客户端的生成日志如下:
2018-06-07 12:41:57.8889|TRACE|3.18.6.7|1|NAMESPACE.ServiceHelper|Maxconnection for server https://app.SOME_SERVER/:443: 48, 0
...
2018-06-07 12:42:03.6253|TRACE|3.18.6.7|1|NAMESPACE.ServiceHelper|Maxconnection for server https://app.SOME_SERVER/:443: 4, 1
这是日志条目的生成方式:
ServicePoint sp = ServicePointManager.FindServicePoint(client.BaseAddress);
Logger.Trace($"Maxconnection for server {baseAddress}: {sp.ConnectionLimit}, {sp.CurrentConnections}");
这是粗略的配置条目:
<connectionManagement>
<add address="https://www.SOME_SERVER" maxconnection="48" />
<add address="https://app.SOME_SERVER" maxconnection="48" />
<add address="*" maxconnection="4" />
</connectionManagement>
正如我所说,日志来自客户,对我而言,日志会产生两次
... Maxconnection for server https://app.SOME_SERVER/:443: 48, 0
这很奇怪,因为我找不到ServicePoint.ConnectionLimit
的任何写入权限。在调试时,我意识到,我在{6}时差异中从ServicePointManager.FindServicePoint(client.BaseAddress)
检索的2个实例在我的机器上是不同的(我使用生成对象ID 进行检查)。
但是,它们在我的机器上有所不同,并且有效。
所以我的问题是,还有什么可以解决这种差异。
我首先遇到的问题是,最初所有内容都是ConnectionLimit
4
,并且仅在稍后(应用程序中约1秒)配置文件已完全加载且值更改为48,但此处为实际上又回到了另一个方向。
所以我的问题是,是什么导致它。
中间有1个HTTP请求使用HttpClient,以防万一。