Ошибка «Произошло исключение при загрузке типа».используя apns-sharp с моно - PullRequest
1 голос
/ 14 февраля 2012

Я пытаюсь переместить свой APN backoffice из PHP в C # из-за проблем с производительностью. Терпите меня, я новичок в C # и моно.

Я только что скачал MonoDevelop 2.8.6.4 и APNS-sharp merge 26 на мою OSX 10.7.2

Я открыл все решение со всеми библиотеками и тестовыми исполняемыми файлами и построил все решение без ошибок. Я изменил поля (идентификатор токена, файл сертификата, ...) в Program.cs в JdSoft.Apple.Apns.Notifications.Test, чтобы соответствовать моим спецификациям. После нескольких попыток мне удалось получить файл сертификата в порядке, и теперь соединение с серверами Apple установлено. Я вижу сообщение о том, что я подключен на выходе приложения.

Проблема наступает сейчас. Каждый раз, когда приложение пытается отправить сообщение в Apple, я получаю сообщение об ошибке «Произошло исключение при загрузке типа». Я попытался немного отладить, и ошибка, кажется, исходит от конструктора NotificationPayload.

Выполняя пошаговые инструкции, кажется, что NotificationAlert правильно создается в конструкторе NotificationPayload. Ошибка появляется при возврате в конструктор уведомлений, где элемент полезной нагрузки отображается в отладчике как «Произошло исключение при загрузке типа». вместо объекта.

Оттуда объект уведомления заканчивается таким же поведением.

Из моих исследований в Интернете это может быть связано с версией 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 всем моно гуру вокруг.

Хорошего дня товарищи разработчики и заранее спасибо за помощь и время. Любые предложения приветствуются.

1 Ответ

1 голос
/ 14 февраля 2012

(Поскольку ОП не может опубликовать ответ сам ...)

В данном конкретном случае решением было получить последнюю версию Newtonsoft.Json.Compact.dll.

В общем, вам нужно попытаться получить как можно больше информации из исключения, выяснить, что оно пытается загрузить, - а затем проверить, присутствует ли проблемная библиотека, и что у вас есть версия, а все остальное ожидает.

...