ServicePointManager ConnectionLimit更改

时间:2018-06-07 22:50:24

标签: .net wpf dotnet-httpclient servicepointmanager servicepoint

我有一个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,以防万一。

0 个答案:

没有答案