Не удается отправить уведомления на iPhone в .NET - проблема с сертификатом .PEM? - PullRequest
0 голосов
/ 10 августа 2009

Я пытаюсь отправить уведомления на мой iPhone, что я успешно сделал с помощью PHP. Однако я не могу открыть сокет-соединение с push-серверами Apple с помощью C #. Я не думаю, что есть проблема с самим сертификатом, так как я могу успешно отправлять уведомления, используя этот код в 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, но у меня все еще остается та же проблема.

Есть идеи, как решить эту проблему (возможный сертификат)?

1 Ответ

0 голосов
/ 10 августа 2009

На самом деле это проблема с .NET 2.0. Не уверен, что именно, но я скомпилировал в Visual Studio 2008, и все отлично работало

...