尝试使用SftpClient通过Renci.SshNet下载文件时出现“无此文件”错误

时间:2019-05-14 21:47:10

标签: c# .net ftp ssh.net

当我从另一台服务器下载文件时,它可以工作。我可以删除文件并获取目录列表,但是无法下载文件。我得到的唯一例外是“没有这样的文件”,即使当我使用从ListDirectory调用返回的文件时也是如此。运行正常的服务器已安装SSH密钥,而未运行的服务器未安装SSH密钥。 Renci.SshNet是否仅从安装了SSH的服务器上进行ftp发送?

Select D.* from InvDetails D
Join Invoice I on on D.INumber=I.INumber
where I.Dateready='2019-05-14' and D.Quantity > 0 and I.INumber IS NOT LIKE '%.%'

完整的错误消息是“没有这样的文件”。 没有InnerException。 HResult = -2146233088。

    private void button7_Click(object sender, EventArgs e)
    {
        string host = "ether4";

        string pathLocalFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "factor_out.txt");

        using (SftpClient sftp = new SftpClient(host, _username, _password))
        {
            try
            {
                sftp.Connect();
                var files = sftp.ListDirectory("/factor/dktest/pdi");
                sftp.ChangeDirectory("/factor/dktest/pdi");
                Debug.Print(sftp.WorkingDirectory);                     // <-- /factor/dktest/pdi
                foreach (var file in files)
                {
                    using (Stream fileStream = File.OpenWrite(pathLocalFile))
                    {
                        //if (!file.Name.StartsWith("."))
                        //    sftp.DownloadFile(file.Name, fileStream); // <-- Exception thrown here

                        if (!file.FullName.EndsWith("."))
                        {
                            sftp.DownloadFile(file.FullName, fileStream);   // <-- Exception thrown here
                            break;
                        }
                    }
                }

                sftp.Disconnect();
            }
            catch (Exception er)
            {
                Console.WriteLine("An exception has been caught " + er.ToString()); // No Such File
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您标记了问题,但您使用的是SFTP代码。

虽然这并不是您眼前一个问题的真正答案,但看来您实际上需要使用FTP。您的SFTP服务器可能因某种原因损坏了。

SSH.NET不支持FTP。您可以使用.NET FtpWebRequest或某些第三方FTP客户端库。