0

PHPを使用して成功したiPhoneに通知をプッシュしようとしています。ただし、C# を使用して Apple のプッシュ サーバーへのソケット接続を開くことができません。PHPで次のコードを使用して通知を正常にプッシュできるため、証明書自体に問題はないと思います。

$ctx = stream_context_create();

stream_context_set_option($ctx, 'ssl', 'local_cert', 'cert.pem');

$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

fwrite($fp, $msg);

以下のコードを使用して C# で認証しようとすると、Apple はすぐに接続を閉じます。「トランスポート接続からデータを読み取れません: 既存の接続がリモート ホストによって強制的に閉じられました。」という例外が発生します。

sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Default, false);

私は基本的にこの質問からすべてのコードを取得しました: C# iPhone push server?

C#では.PEMファイルをプログラムでロードすることはできないと思うので、証明書に問題があるのではないかと思いました。OpenSSL を使用して .PFX ファイルに変換しましたが、それでも同じ問題が発生します。

この(証明書の可能性がある)問題をどのようにトラブルシューティングできますか?

4

1 に答える 1

0

これは実際には.NET2.0の問題であることが判明しました。正確にはわかりませんが、Visual Studio 2008でコンパイルしたところ、すべてがうまく機能しました。

于 2009-08-10T17:49:52.243 に答える