我正在对客户端和服务器代码进行一些负载测试。随着时间的推移,前1000个电话都很好。但是(在某些运行中(,我开始得到以下异常:
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host..
---> System.Net.Sockets.SocketException (10054): An existing connection was forcibly closed by the remote host.
一些搜索显示,一个常见的解决方案是添加以下代码:
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
但这似乎是一个解决方案,当没有一个电话工作。在我的情况下,在我开始获得上述异常之前,我可以获得1000多个成功的电话。
我问的真正目的是,在这种情况开始发生后,我会遇到很多类似的失败。
我想知道发生这种情况后,我的HttpClient
是否处于故障状态?如果是,我该如何解决?(我的HttpClient
是静态的,如果它失败了,那么我的所有呼叫都将失败。(
注意:我的代码作为NuGet运行,需要在.Net Framework 4.7和.Net Core 3.1中运行。
这不应该与你的代码有关,那就是主机拒绝连接,它可能是因为你发送了太多请求而关闭的,或者更可能是因为它限制了你的速率。
我认为这个问题是由于WSO2 API管理器限制了连接数量。我们更改了WSO2服务器上的一些设置,这个问题就消失了。(我不知道WSO2管理员做了哪些更改。(