Исключение клиента, не подключенного к SSH.Net

У меня странная проблема с Renci SSH.Net:

var sftp = new SftpClient(remoteHost, remotePort, remoteUserName, remotePassword);
try
{
    sftp.Connect();
    using (var file = new FileOutputStream(filePath))
    {
        sftp.DownloadFile(remoteFileName, file);
    }

    sftp.Disconnect(); // *
}
catch (Exception ex)
{
    // log stuff
    throw;
}
finally
{
    sftp.Dispose();
}

Приведенный выше код выдает // * с SshConnectionException: «Клиент не подключен», хотя при проверке sftp.IsConnected непосредственно перед дает true.

Файл загружается, как и ожидалось.

Трассировка стека выглядит следующим образом:

at Renci.SshNet.Session.SendMessage(Message message)
at Renci.SshNet.Session.SendDisconnect(DisconnectReason reasonCode, String message)
at Renci.SshNet.Session.Disconnect()
at Renci.SshNet.BaseClient.Disconnect()
at My.Program.MyMethod() in c:\path\to\my\program.cs:line 42

person dav_i    schedule 27.08.2014    source источник
comment
Моя текущая работа заключается в catch (SshConnectionException ex) { }, что не идеально   -  person dav_i    schedule 27.08.2014
comment
У меня возникла та же проблема и следующее исключение: System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (0x80004005): не удалось установить соединение, поскольку целевая машина активно отказалась от него [fe80::1486:3389:4e77:f708%10]: 22 в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) в Renci.SshNet.Session.SocketConnect(хост String, порт Int32) [ссылка]stackoverflow.com/questions/2972600/   -  person Canada Wan    schedule 25.04.2018


Ответы (1)


У меня тоже такая же проблема. Пройдите через это https://sshnet.codeplex.com/workitem/1561 чтобы выяснить причину. Вот моя текущая работа:

        catch (Exception ex)
        {
            if (ex is SshConnectionException || ex is SocketException)
            {
                _ifwInstance.Error(string.Format("Ignoring {0} during listing directory", ex.Message));
            }
            else
            {
                Debugger.Log(0, null, ex.InnerException.ToString());
                throw new Exception("Login to SFT FAILED", ex);
            }
        }
person Rishab    schedule 16.10.2014
comment
Ссылка мертва - person Brent; 06.06.2019