c# – ‘发送大量数据时,远程主机强行关闭连接’

我在C#多线程 Windows服务中发送推送通知时遇到了一些麻烦.
当我向APNS发送大量通知时,一些线程会抛出异常:

Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.
   at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.Security._SslStream.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.Write(Byte[] buffer) ...

我有一个16个线程的threadPool,每个线程都打开了与Apple的联系.
 这不是暂停,因为我尝试过:sslStream.WriteTimeout = 60000;
 我也尝试过:Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.KeepAlive,false);

连接在发送开始时未关闭.

编辑:我认为所有数据都已发送,Apple突然关闭了连接.

你知道这个例外的起源吗?
如何解决?

如果需要,我可以给你一些代码.

非常感谢你的回答 !

例外情况“远程主机强行关闭现有连接”通常意味着您打开连接的其他主机决定不再与您通信.为此,它发送一个FIN,其中RST设置为从其末端关闭连接.

由于这种情况发生在您发送大量通知时,服务是否可能故意限制您以防止过载?

相关文章
相关标签/搜索