文件未从Windows传输到Linux远程服务器

时间:2019-01-09 14:53:32

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

我正在尝试在Visual Studio中使用WinSCP。我使用Managed 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);

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

2 个答案:

答案 0 :(得分:1)

  

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

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

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

答案 1 :(得分:0)

不确定,但您似乎已将协议设置为FTP,服务器可能不支持该协议。如果您能够通过腻子登录,则意味着可以建立SSH连接。尝试将协议设置为SFTP。