Pergunta

Eu estou tentando enviar notificações para o meu iPhone, que eu tenho feito com sucesso usando PHP. No entanto, eu sou incapaz de abrir uma conexão de soquete para servidores de envio da Apple usando C #. Eu não acho que há um problema com o próprio certificado, desde que eu sou capaz de empurrar com sucesso notificações usando esse código em 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);

Quando eu tentar autenticar em C # usando o código abaixo, a Apple fecha a conexão imediatamente. Eu recebo esta exceção: "Não é possível ler dados da conexão de transporte:. Uma conexão existente forçosamente foi fechada pelo host remoto"

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

eu basicamente tomou todo o meu código de esta questão: servidor de envio href="https://stackoverflow.com/questions/1056083/c-iphone-push-server"> iPhone

Eu pensei que poderia ser um problema com o certificado desde que eu não acho que C # permite-lhe apenas carregar .PEM arquivos programaticamente. Eu usei OpenSSL para convertê-lo para um arquivo .pfx, mas ainda tenho o mesmo problema.

Qualquer idéia de como posso resolver este problema (possível certificado)?

Foi útil?

Solução

Este facto acabou por ser um problema com .NET 2.0. Não tenho certeza exatamente o que é, mas eu compilado no Visual Studio 2008 e tudo funcionou muito bem.

scroll top