1

我正在尝试将我的 APN 后台从 PHP 移动到 C# 以解决性能问题。请耐心等待,我是 C# 和单声道的新手。

我刚刚在我的 OSX 10.7.2 上下载了 MonoDevelop 2.8.6.4 和 APNS-sharp merge 26

我打开了包含所有库和测试可执行文件的整个解决方案,并构建了整个解决方案而没有错误。我修改了 JdSoft.Apple.Apns.Notifications.Test 中 Program.cs 中的字段(令牌 ID、证书文件……)以满足我的规范。经过几次尝试,我设法让我的证书文件正常,现在与 Apple 服务器的连接已建立。我在应用程序的输出中看到消息说我已连接。

问题来了。每次应用程序尝试向 Apple 发送消息时,我都会收到错误“发生类型加载异常”。我尝试了一点调试,错误似乎来自 NotificationPayload 构造函数。

逐步跟进,看来 NotificationAlert 已在 NotificationPayload 构造函数中正确实例化。返回到通知构造函数时出现错误,其中 Payload 成员在调试器中显示为“发生类型加载异常”。而不是一个对象。

从那里通知对象最终具有相同的行为。

根据我在互联网上的研究,这可能来自 Newtonsoft.Json.Compact.dll 的版本,但我不知道如何处理这条信息。

有关信息,在我的 CentOS 服务器上运行编译测试时,我可以看到相同的错误。

有关更多信息,请参阅应用程序消息(在测试程序中将 ex.Message 更改为 ex.ToString() 以获得完整错误):

Notification Queued!
Sleeping 15000 milliseconds before next Notification...
Connecting...
Connected...
Error: System.TypeLoadException: A type load exception has occurred.
at JdSoft.Apple.Apns.Notifications.Notification.ToBytes () [0x0006c] in /Users/laurent/Downloads/Redth-APNS-Sharp-595275f 2/JdSoft.Apple.Apns.Notifications/Notification.cs:90 
at JdSoft.Apple.Apns.Notifications.NotificationChannel.Send (JdSoft.Apple.Apns.Notifications.Notification notification) [0x00000] in /Users/laurent/Downloads/Redth-APNS-Sharp-595275f 2/JdSoft.Apple.Apns.Notifications/NotificationChannel.cs:371 
at JdSoft.Apple.Apns.Notifications.NotificationConnection.workerMethod () [0x00035] in /Users/laurent/Downloads/Redth-APNS-Sharp-595275f 2/JdSoft.Apple.Apns.Notifications/NotificationConnection.cs:381

我没有输入代码,因为我没有更改您在https://github.com/Redth/APNS-Sharp上看到的代码。

我向周围的所有单声道大师发送 SOS。

祝各位开发者度过愉快的一天,并提前感谢您的帮助和时间。欢迎任何建议。

4

1 回答 1

1

(因为OP不能自己发布答案......)

在这种特殊情况下,解决方案是获取最新版本的 Newtonsoft.Json.Compact.dll.

通常,您需要尝试从异常中获取尽可能多的信息,找出它试图加载的内容 - 然后检查有问题的库是否存在,以及您是否获得了其他所有期望的版本。

于 2012-02-14T17:24:58.200 回答