Próbuję napisać serwer wypychania dla iPhone'a w języku C#. Mam następujący kod:C# serwer push iPhone?
// Create a TCP/IP client socket.
using (TcpClient client = new TcpClient())
{
client.Connect("gateway.sandbox.push.apple.com", 2195);
using (NetworkStream networkStream = client.GetStream())
{
Console.WriteLine("Client connected.");
X509Certificate clientCertificate = new X509Certificate(@"certfile.p12", passwordHere);
X509CertificateCollection clientCertificateCollection = new X509CertificateCollection(new X509Certificate[1] { clientCertificate });
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null
);
try
{
sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com");
}
catch (AuthenticationException e)
{
Console.WriteLine("Exception: {0}", e.Message);
if (e.InnerException != null)
{
Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
}
Console.WriteLine("Authentication failed - closing the connection.");
client.Close();
return;
}
}
ect ....
Tylko trzymam odbierania wyjątek: „Wezwanie do SSPI nie powiodła się, zobacz wyjątek wewnętrzny” Wyjątek Wewnętrzna -> „otrzymanej wiadomości był nieoczekiwany lub źle sformatowany. "
Czy ktoś ma pojęcie, co tu jest nie tak?
Wyliczyłem to. Zastąpiono sslStream.AuthenticateAsClient ("gateway.sandbox.push.apple.com"); z sslStream.AuthenticateAsClient ("gateway.sandbox.push.apple.com", clientCertificateCollection, SslProtocols.Default, false); I zarejestrował certyfikaty na komputerze. – Kyle
To zadziałało dla ciebie? – Zanoni
Tak, mam wszystko działa i mogę przekazywać wiadomości do mojego iPhone'a. Nie zapomnij zarejestrować pliku .p12 w oknach. – Kyle