Невозможно отправить уведомления на iPhone в .NET - проблема с сертификатом .PEM?
-
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, и все работало отлично.