【问题标题】:Files not getting transferred from Windows to Linux remote server文件未从 Windows 传输到 Linux 远程服务器
【发布时间】:2019-01-09 14:53:31
【问题描述】:

我正在尝试在 Visual Studio 中使用 WinSCP。我使用托管 NuGet 包下载并安装了 WinSCP。我在 Web 应用程序中使用以下代码将其中一个文件传输到远程 Linux 服务器。代码执行良好,没有任何错误,但文件未传输。我使用 PuTTY 登录以验证文件是否已实际传输,但无法找到该文件。下面是使用的代码

public int Upload(String HostName, String UserName, String Password, String remotePath, String localFilePath)
{
    int result = 0;
    Session session = null;
    try
    {
        // Setup session options               
        SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Ftp,
            HostName = HostName,
            UserName = UserName,
            Password = Password,
            Timeout = TimeSpan.FromDays(1),

        };

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

            // upload files
            TransferOptions transferOptions = new TransferOptions();
            transferOptions.TransferMode = TransferMode.Ascii;

            TransferOperationResult transferResult = null;
            transferResult = session.PutFiles(localFilePath, remotePath, false, transferOptions);

            //  Throw on any error
            transferResult.Check();
            //  Print results
            foreach (TransferEventArgs transfer in transferResult.Transfers)
            {
                Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
            }
            session.GetFiles(@"\\remoteserver\folder1\folder_backups\test_files\test1.txt", @"d:\folder3\").Check();
        }

        result = 0;
    }
    catch (Exception e)
    {
        Console.WriteLine("Error: {0}", e);
        result = 1;
    }
    finally
    {
        if (session != null)
        {
            session.Dispose();
        }
    }
    return result;
}

参数传递如下:

project1.Upload("remote host server", "username", "password", @"\\remote host server\folder1\folder_backups\test_files\", Fileupload1.PostedFile.FileName);

代码执行没有任何错误,但没有上传或下载文件。如何解决这个问题? 谢谢

【问题讨论】:

  • 请发布 WinSCP 会话日志文件 (Session.SessionLogPath)。
  • \\remote host server\folder1\folder_backups\test_files\ 看起来不像是一个有效的 FTP 路径。当您登录到服务器时,您在 WinSCP GUI 中看到什么路径?
  • session.sessionLogpath 为空
  • 您必须将Session.SessionLogPath 设置为您要将会话日志文件存储到的路径! ---- 你没有回答我的另一个问题。 - 在您“导航到文件夹”(正如您在对另一个问题的评论中所写)之后,您在 WinSCP GUI 文件面板中看到了什么路径?
  • 在 GUI 中登录后 - 它指向 /home/UserId 。但是我要移动文件的文件夹存在于 /folder1

标签: c# .net ftp winscp winscp-net


【解决方案1】:

在 GUI 中登录后 - 它指向 /home/UserId 。但是我要移动文件的文件夹存在于 /folder1

如果您要使用的远程路径是/folder1/,请将其用于Upload 方法的remotePath 参数,而不是明显错误的值@"\\remote host server\folder1\folder_backups\test_files\"。

project1.Upload("host", "user", "password", "/folder1/", Fileupload1.PostedFile.FileName);

【讨论】:

  • 谢谢。试过了。在传输文件“C:\Users\userID\Desktop\change1.txt”时出现错误。将文件复制到远程端失败。无法创建文件。 {WinSCP.SessionRemoteException:传输文件“C:\Users\userId\Desktop\change1.txt”时出错。将文件复制到远程端失败。无法创建文件。在 WinSCP.OperationResultBase.Check()
  • 再一次,向我们展示一个会话日志文件。 + 来自 WinSCP GUI 的日志文件显示将同一文件上传到同一远程目录也会有所帮助。
  • 发现问题。文件夹名称后需要最后一个“/”
【解决方案2】:

不完全确定,但您似乎已将协议设置为服务器可能不支持的 FTP。如果您能够通过 putty 登录,则意味着可以进行 SSH 连接。尝试将协议设置为 SFTP。

【讨论】:

  • 如果不支持 FTP 协议,Open 方法会抛出。尽管您对 SFTP 的看法是正确的。
  • 使用 WinSCP GUI,它通过 FTP 连接。我试图访问的文件夹位于根路径中。默认情况下,当通过代码建立连接时,它会导航到我的用户 ID 文件夹。我需要返回根目录,然后导航到文件夹。如何通过代码回到根目录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 2011-03-14
  • 1970-01-01
  • 2012-12-06
相关资源
最近更新 更多