2013-04-04 8 views
5

Próbuję połączyć się z serwerem za pośrednictwem klienta SslStream/Tcp. Za każdym razem otrzymuję wyjątek stwierdzający: Otrzymano nieoczekiwany EOF lub 0 bajtów ze strumienia transportowego w wierszu AuthenticateAsClient.SslStream TcpClient - Otrzymano nieoczekiwany EOF lub 0 bajtów ze strumienia transportowego

mam włączone rejestrowanie śladowych i otrzymuję następujące dwa błędy w dziennikach:

System.Net informacji: 0. [12260] SecureChannel # 66702757 :: konstruktor (hostname = xxx.xx.xx .xxx, # clientCertificates = 0, encryptionPolicy = RequireEncryption)

Informacje System.Net: 0: [12260] SecureChannel # 66702757 - Pozostały z 0 certyfikatami klienta do wyboru.

Czy ktoś mógłby udzielić mi porady, jak rozwiązać ten problem? Nie wiem dlaczego, ale rzuca się na zewnętrzny haczyk, jeśli to robi jakąkolwiek różnicę.

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; 
} 

Odpowiedz

2

Domyślam się, że serwer wymaga certyfikatu klienta.

Powiązane problemy