Файлы не передаются с Windows на удаленный сервер Linux

Я пытаюсь использовать WinSCP в визуальной студии. Я скачал и установил WinSCP с помощью управляемого пакета NuGet. Я использовал приведенный ниже код в веб-приложении для передачи одного из файлов на удаленный сервер 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);

Код выполняется без ошибок, но файл не загружается и не загружается. Как это исправить? Спасибо


person venkat14    schedule 09.01.2019    source источник
comment
Пожалуйста, опубликуйте файл журнала сеанса WinSCP (Session.SessionLogPath).   -  person Martin Prikryl    schedule 09.01.2019
comment
\\remote host server\folder1\folder_backups\test_files\ на самом деле не выглядит как допустимый FTP-путь. Какой путь вы видите в графическом интерфейсе WinSCP при входе на сервер?   -  person Martin Prikryl    schedule 09.01.2019
comment
session.sessionLogpath имеет значение null   -  person venkat14    schedule 10.01.2019
comment
Вы должны указать Session.SessionLogPath путь, по которому вы хотите сохранить файл журнала сеанса! ---- И вы не ответили на мой другой вопрос. - Какой путь вы видите на файловой панели WinSCP GUI после перехода к папкам (как вы написали в комментарии к другому вопросу)?   -  person Martin Prikryl    schedule 10.01.2019
comment
После входа в систему в графическом интерфейсе он указывает на /home/UserId . Но папка, в которую я хочу переместить файлы, существует в /folder1   -  person venkat14    schedule 10.01.2019


Ответы (2)


После входа в систему в графическом интерфейсе он указывает на /home/UserId . Но папка, в которую я хочу переместить файлы, существует в /folder1

Если удаленный путь, который вы хотите использовать, равен /folder1/, используйте его для аргумента remotePath вашего метода Upload вместо явно неправильного значения @"\\remote host server\folder1\folder_backups\test_files\".

project1.Upload("host", "user", "password", "/folder1/", Fileupload1.PostedFile.FileName);
person Martin Prikryl    schedule 10.01.2019
comment
Спасибо. Пробовал. Получение ошибки как Ошибка передачи файла «C:\Users\userID\Desktop\change1.txt». Не удалось скопировать файлы на удаленную сторону. Не удалось создать файл. {WinSCP.SessionRemoteException: ошибка при передаче файла «C:\Users\userId\Desktop\change1.txt». Не удалось скопировать файлы на удаленную сторону. Не удалось создать файл. в WinSCP.OperationResultBase.Check() - person venkat14; 10.01.2019
comment
Итак, снова покажите нам файл журнала сеанса. + Файл журнала из графического интерфейса WinSCP, показывающий загрузку того же файла в тот же удаленный каталог, также может помочь. - person Martin Prikryl; 10.01.2019
comment
Нашел проблему. Последний «/» обязателен после имени папки - person venkat14; 10.01.2019

Не совсем уверен, но похоже, что вы установили протокол FTP, который может не поддерживаться сервером. Если вы можете войти через шпатлевку, это означает, что SSH-соединение возможно. Попробуйте установить протокол на SFTP.

person Jed Buenaventura    schedule 09.01.2019
comment
Если бы протокол FTP не поддерживался, метод Open выдал бы ошибку. Хотя вы правы с SFTP. - person Martin Prikryl; 09.01.2019
comment
с графическим интерфейсом WinSCP он подключается через FTP. Папки, к которым я пытаюсь получить доступ, находятся в корневом пути. По умолчанию, когда соединение устанавливается с помощью кода, оно переходит в папку с моим идентификатором пользователя. Мне нужно вернуться в корневой каталог, а затем перейти к папкам. Как вернуться в корневой каталог через код - person venkat14; 10.01.2019