Невозможно отправить уведомления на iPhone в .NET - проблема с сертификатом .PEM?

StackOverflow https://stackoverflow.com/questions/1255471

  •  12-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь отправить уведомления на свой 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);

Я в основном взял весь свой код из этого вопроса: С# iPhone push-сервер?

Я подумал, что это может быть проблема с сертификатом, поскольку я не думаю, что C# позволяет просто загружать файлы .PEM программно.Я использовал OpenSSL, чтобы преобразовать его в файл .PFX, но у меня все еще есть та же проблема.

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top