2013-04-04 7 views
5

Ich versuche, über einen SslStream/Tcp Client eine Verbindung zu einem Server herzustellen. Jedes Mal bekomme ich eine Ausnahme mit: Empfangen eine unerwartete EOF oder 0 Bytes aus dem Transportstream in der AuthenticateAsClient-Zeile.SslStream TcpClient - Unerwartetes EOF oder 0 Bytes vom Transportstream empfangen

Ich habe Trace-Protokollierung aktiviert und bin immer die folgenden zwei Fehler in den Protokollen:

System.Net Information: 0.: [12260] Secure # 66702757 :: Ctor (hostname = xxx.xx.xx .xxx, # clientCertificates = 0, encryptionPolicy = RequireEncryption)

System.Net Informationen: 0: [12260] SecureChannel # 66702757 - Links mit 0 Client-Zertifikaten zur Auswahl.

Kann mir jemand einen Rat geben, wie ich das lösen kann? Nicht sicher warum, aber es wirft zum äußeren Haken, wenn das einen Unterschied macht.

try 
{ 
    TcpClient client = new TcpClient(_host, _port); 
    // _stream = client.GetStream(); 

    _stream = new SslStream(client.GetStream(), false, ValidateServerCertificate, null); 
    _sslReader = new StreamReader(client.GetStream()); 

    try 
    { 
     _stream.AuthenticateAsClient(_host); 
    } 
    catch (AuthenticationException e) 
    { 
     client.Close(); 
     return; 
    } 

    HandleConnect(); 
} 
catch (Exception e) 
{ 
    _logger.Error(e.BuildExceptionInfo()); 
} 

public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
{ 
    if (sslPolicyErrors == SslPolicyErrors.None || sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch) 
     return true; 

    return false; 
} 

Antwort

2

Meine Vermutung ist der Server erfordert ein Client-Zertifikat.

Verwandte Themen