Domanda

Sto cercando di spingere le notifiche al mio iPhone, che ho fatto con successo utilizzando PHP. Tuttavia, sono in grado di aprire una connessione socket a server push di Apple utilizzando C #. Non credo che ci sia un problema con il certificato stesso, dal momento che sono in grado di spingere le notifiche con successo utilizzando questo codice in 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 provo ad autenticare in C # usando il codice seguente, Apple chiude la connessione subito. Ottengo questa eccezione: "Impossibile leggere i dati dal collegamento:. Una connessione esistente forzatamente è stata chiusa dall'host remoto"

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

ho praticamente preso tutto il mio codice da questa domanda:? server push C # iPhone

ho pensato che potrebbe essere un problema con il certificato in quanto non credo che C # consente di caricare solo file .PEM di programmazione. Ho usato OpenSSL per convertirlo in un file PFX, ma ho ancora lo stesso problema.

Qualsiasi idea di come posso risolvere questo (possibile certificato) problema?

È stato utile?

Soluzione

Questo in realtà si è rivelato essere un problema con .NET 2.0. Non so esattamente quello che è, ma ho compilato in Visual Studio 2008 e tutto funzionava perfettamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top