尝试使用 APN 推送通知时出现 AuthenticateAsClient 错误

AuthenticateAsClient error when attempting push notification with APNs

我正在为我公司的应用开发推送通知(使用 C#)。我似乎已经解决了这个过程中可能出现的所有问题。我终于可以使用推送通知了,但我仍然有一个无法解决的问题。

我正在使用 gateway.sandbox.push.apple.com 服务进行测试,大部分时间一切正常。但偶尔,我会收到Authentication failed because the remote party has closed the transport stream。似乎也没有什么可以纠正的。它只是继续失败,直到它再次开始工作。随机失败的调用是:

sslStream.AuthenticateAsClient(APN_SERVICE, localCertCollection, System.Security.Authentication.SslProtocols.TLS, false);

根据 Apple 文档,如果 APN 提供了错误的令牌,APN 将关闭流,但在这种情况下,我知道我使用的是良好的令牌。而且我不会发送大量请求 - 每两分钟只会发送一两个请求。

还有其他人 运行 喜欢这种行为吗?我是否达到了某种 APN 限制?关于可能发生的事情有什么想法吗?

发生了两件事:

首先,我有一些错误的日志记录正在接收 NullReferenceException 并掩盖了真正的异常。

其次,真正的异常表明我正在尝试同时读取多个数据,而 SslStream 不支持。

SslStream.BeginRead