WinSCP - выгрузка файлов с компьютера с Windows в Linux - ошибка: переполнение промежутка времени из-за слишком большой продолжительности - PullRequest
0 голосов
/ 09 января 2019

Я установил WinSCP из пакета Managed NuGet.

Я пытаюсь использовать WinSCP для загрузки файлов с Windows на сервер Linux. Я получаю ошибку как

Временной интервал переполнен, поскольку длительность слишком велика.

Я попробовал следующий код для загрузки файлов.

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.MaxValue,
        };

        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);
            }

        }

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

Как загрузить файл на удаленный сервер?

Получено исключение для стека:

at System.TimeSpan.Add(TimeSpan ts) 
at System.TimeSpan.op_Addition(TimeSpan t1, TimeSpan t2)
at WinSCP.Session.CheckForTimeout(String additional) 
at WinSCP.PatientFileStream.Wait(Int32& interval) 
at WinSCP.PatientFileStream.Read(Byte[] array, Int32 offset, Int32 count) 
at System.Xml.XmlTextReaderImpl.ReadData() 
at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars) 
at System.Xml.XmlTextReaderImpl.ParseText() 
at ProjectName.Upload(String HostName, String UName, String Password, String remotePath, String localFilePath)

1 Ответ

0 голосов
/ 09 января 2019

Установите SessionOptions.Timeout на некоторое реалистичное значение:

Timeout = TimeSpan.FromDays(1),
...