C#学习教程:PushSharpApple-接收到的消息意外或格式错误该应用程序是.NET4.5.1(尽管我也尝试过针对.NET4.5和.NET4)我尝试通过沙盒AppleAPNS发送推送消息但没有成功。我使用RayWenderlich演练中提供的PHP脚本成功发送了消息,使用与我的PushSharp应用程序相同的证书和相同的设备ID。我已经通过从钥匙串中导出完整的证书p12进行了测试。导出完成的证书和密钥。导出私钥。也可通过此处使用的方法获得。当我为PHP脚本组合证书和密钥时,没有任何问题。我已经将p12证书导入到我测试过的机器上——似乎没有任何区别。在使用推送代理注册苹果推送服务时,我尝试更改IsProduction标志。将它设置为生产时没有错误(即使这是一个沙盒证书),但在这种情况下它在设备上显然也会失败。我的所有消息都不会通过,所有消息都会得到如下所示的服务异常:System.Security.Authentication.AuthenticationException:AcalltoSSPIfailed,seeinnerexception。--->System.ComponentModel.Win32Exception:收到的消息是意外的或格式错误---内部异常堆栈跟踪结束---在System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequestasyncRequest,异常异常)在System.Net.Security.SslState.StartSendBlob(Byte[]传入,Int32计数,AsyncProtocolRequestasyncRequest).SslState.StartReceiveBlob(Byte[]buffer,AsyncProtocolRequestasyncRequest)atSystem.Net.Security.SslState.StartSendBlob(Byte[]incoming,Int32count,AsyncProtocolRequestasyncRequest)atSystem.Net.Security.SslState.ForceAuthentication(BooleanreceiveFirst,Byte[]缓冲区,AsyncProtocolRe请求asyncRequest)在System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResultlazyResult)在PushSharp.Apple.FeedbackService.Run(ApplePushChannelSettings设置,CancellationTokencancelToken)在PushSharp.Apple.ApplePushService.c__DisplayClass4.b__)1(对象状态我的代码:varpush=newPushBroker();//为通道创建/销毁/异常、notificationrequeue、serviceexception、通知发送注册事件处理程序varappleCert=File.ReadAllBytes(ConfigurationManager.AppSettings["CertAddress"]);push.RegisterAppleService(newApplePushChannelSettings(false,appleCert,ConfigurationManager.AppSettings["CertPassword"]));varpn=newAppleNotification().ForDeviceToken(item.SendToDeviceIdentifier).WithAlert(item.AlertMessage).WithBadge(item.Badges);push.QueueNotification(pn));我调用通道事件然后调用服务异常一些相关问题提到这个错误可能与防火墙问题有关-我已经在2个能够发送推送通知的不同网络中测试了我的应用程序(其中1个当前正在使用PushSharp应用程序)。任何见解将不胜感激。我们在使用现已弃用的APNS-Sharp库(PushSharp的前身)时遇到了同样的问题。我提交了APNS-Sharp的拉取请求,根据我的测试,它解决了这个问题。修改是改变(在ApplePushChannel.cs中)stream.AuthenticateAsClient(this.appleSettings.Host,this.certificates,System.Security.Authentication.SslProtocols.Ssl3,false);stream.AuthenticateAsClient(this.appleSettings.Host,this.certificates,System.Security.Authentication.SslProtocols.Tls,false);我没有找到关于此的确认,但看起来SandboxAPNS不再支持SSL3协议。我对生产APNS的通知仍然有效,其他人报告此问题也是如此。您可以在此处找到拉取请求:https://github.com/Redth/PushSharp/pull/369/files更新Apple开发者网站上有一个关于此主题的线程:https://devforums.apple.com/thread/224320?tstart=0然而,有些人也在这个线程或github线程上。所以信息肯定是有偏差的。我在Apple的联系人说:虽然还没有官方文档,但APNS似乎正在转向TLS而不是SSL(完全基于看到这一变化——我还没有听到任何官方文档)。如果你们中有人在WindowsServer2003上运行这个(我知道,我知道),你将不得不运行这个补丁,否则即使你实施了修复,你仍然会遇到奇怪的错误。我花了几个小时想知道为什么我的2008服务器可以工作而我的2003服务器不能。http://support.microsoft.com/kb/948963以上就是C#学习教程:PushSharpApple-Themessagereceivedisunexpectedorinthewrongformat所有内容分享,如果对大家有用需要了解更多关于C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
