1

パフォーマンスの問題のために、APNバックオフィスをPHPからC#に移動しようとしています。我慢してください、私はC#とモノラルに不慣れです。

OSX10.7.2にMonoDevelop2.8.6.4とAPNS-sharpmerge26をダウンロードしました。

すべてのライブラリとテスト実行可能ファイルを使用してソリューション全体を開き、エラーなしでソリューション全体を構築しました。JdSoft.Apple.Apns.Notifications.TestのProgram.csのフィールド(トークンID、証明書ファイルなど)を、仕様に合うように変更しました。数回試した後、証明書ファイルを正常に取得でき、Appleサーバーへの接続が確立されました。アプリケーションの出力に接続しているというメッセージが表示されます。

問題が今やってくる。アプリケーションがAppleにメッセージを送信しようとするたびに、「タイプロード例外が発生しました」というエラーが表示されます。少しデバッグを試みましたが、エラーはNotificationPayloadコンストラクターから発生しているようです。

ステップバイステップのフォローアップを行うと、NotificationAlertがNotificationPayloadコンストラクター内で正しくインスタンス化されているように見えます。ペイロードメンバーがデバッガーに「タイプロード例外が発生しました」と表示される通知コンストラクターに戻ると、エラーが表示されます。オブジェクトの代わりに。

そこから、Notificationオブジェクトは同じ動作になります。

インターネットでの私の調査から、これは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 に答える