2013-04-04 12 views
5

से एक अप्रत्याशित ईओएफ या 0 बाइट प्राप्त हुआ है, मैं एक एसएसएलस्ट्रीम/टीसीपी क्लाइंट के माध्यम से किसी सर्वर से कनेक्ट करने का प्रयास कर रहा हूं। हर बार जब मैं करता हूं तो मुझे एक अपवाद मिलता है: प्रमाणीकरण एस्क्लिएंट लाइन पर परिवहन स्ट्रीम से एक अप्रत्याशित ईओएफ या 0 बाइट प्राप्त हुआ।एसएसएलस्ट्रीम टीसीपी क्लाइंट - परिवहन स्ट्रीम

मैं ट्रेस लॉगिंग सक्षम की है और लॉग में निम्न दो त्रुटियों हो रही है:

System.Net जानकारी: 0:। [12260] SecureChannel # 66,702,757 :: ctor (होस्ट नाम = xxx.xx.xx .xxx, # clientCertificates = 0, एन्क्रिप्शन नीति = आवश्यकता एन्क्रिप्शन)

सिस्टम.Net जानकारी: 0: [12260] सिक्योर चैनल # 66702757 - से चुनने के लिए 0 क्लाइंट प्रमाणपत्रों के साथ छोड़ दिया गया।

क्या कोई मुझे हल करने के तरीके पर कोई सलाह दे पाएगा? यकीन नहीं है कि क्यों यह बाहरी पकड़ पर फेंक रहा है अगर इससे कोई फर्क पड़ता है।

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

उत्तर

2

मेरा अनुमान है कि सर्वर को क्लाइंट प्रमाणपत्र की आवश्यकता है।

संबंधित मुद्दे