System.IO.IOException:身份验证失败,因为远程方已关闭传输流

时间:2013-04-03 07:00:08

标签: c# web-services remote-access

我正在创建一个web服务(在.NET 3.5中),以根据域名获取远程服务器的SSL证书信息,我有一个客户端,它是一个调用该服务的控制台应用程序。目前对我来说有11个域名。我能够获得除一个服务器之外的所有服务器的SSL信息。

我的代码是:

    using (TcpClient client = new TcpClient())
    {            
        client.Connect(strDNSEntry, 443);

        SslStream ssl = new SslStream(client.GetStream(), false);
        try
        {
            ssl.AuthenticateAsClient(strDNSEntry);    //Error thrown here
        }
        catch (AuthenticationException e)
        {
            log.Debug(e.Message);
            ssl.Close();
            client.Close();
            return cert;
        }
        catch (Exception e)
        {
            log.Debug(e.Message);
            ssl.Close();
            client.Close();
            return cert;
        }
        cert = new X509Certificate2(ssl.RemoteCertificate);
        ssl.Close();
        client.Close();
        return cert;
    }    

错误是

  

“[System.IO.IOException] = {”身份验证失败,因为远程   派对关闭了传输流。“}”。

当我在SSLStream调试期间检查时,我发现错误为“

  

只有使用成功通过身份验证才允许此操作   上下文中,”

这是因为我没有足够的凭据是否抛出错误或服务有任何问题?此外,我尝试对该服务器进行远程桌面连接,我无法进行连接。

1 个答案:

答案 0 :(得分:0)

也许您可以使用“Windows Communication Foundation”WCF框架,并创建服务类,然后使用SSL传输配置正确配置客户端/服务器TCP绑定参数。

如果您尝试这样做,我稍后会给您一个测试用例。