我在 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 个线程组成的线程池,每个线程都打开了与 Apple 的连接。
这不是超时,因为我尝试过:sslStream.WriteTimeout = 60000;
我也尝试过:Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.KeepAlive, false);
发送开始时连接未关闭。
编辑:我认为所有数据都已发送,Apple 突然关闭了连接。
你知道这个异常的起源吗?怎么解决?
如果需要,我可以给你一些代码。
非常感谢你的回答 !