使用 WinSCP .NET 程序集从 FTP 下载文件的代码无法连接,但我可以在 WinSCP GUI 中连接

the*_*heo 5 .net c# ftp winscp winscp-net

我需要通过 WinSCP .NET 程序集从 FTP 下载文件。我当前有此代码,但错误显示身份验证失败。

try
{
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = "172.xx.xxx.xx",
        UserName = "usersample",
        Password = "P@ssw0rd",
        PortNumber = 21
    };

    using (Session session = new Session())
    {
        // Connect
        session.Open(sessionOptions);

        // Download files
        TransferOptions transferOptions = new TransferOptions();
        transferOptions.TransferMode = TransferMode.Binary;

        TransferOperationResult transferResult;
        transferResult =
            session.GetFiles(
                "/HST/sample.txt", "C:\\Users\\john\\Documents\\SampleFolder\\",
                false, transferOptions);

        // Throw on any error
        transferResult.Check();

        // Print results
        foreach (TransferEventArgs transfer in transferResult.Transfers)
        {
            Console.WriteLine("Download of {0} succeeded", transfer.FileName);
        }

        Console.ReadLine();
    }

}
catch (Exception e)
{
    Console.WriteLine("Error: {0}", e);
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

我从此参考中获取了代码:https ://winscp.net/eng/docs/library_session_getfiles

原来,它有以下内容:

SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
Run Code Online (Sandbox Code Playgroud)

但我删除了它,因为我没有它,而且我认为它是用于 SFTP(不确定)的,我已经手动尝试了凭据,它们可以工作。我能够登录。请帮忙。谢谢。

Mar*_*ryl 7

WinSCP 常见问题解答适用于您的情况:
当我可以使用 GUI 时,为什么我无法使用脚本进行连接/传输(反之亦然)?


首先,最简单的解决方案是使用GUI 会话中的“生成传输代码”功能来获取工作代码模板。

  • 登录GUI;
  • 在远程面板中选择要下载的文件,在本地面板中选择目标本地目录;
  • 使用下载命令;
  • 下载传输选项对话框中,使用传输设置 > 生成代码
  • 生成传输代码对话框打开。选择.NET 程序集选项卡并确保选择C#语言。

    在此输入图像描述