Функция Azure SSH.Net Время чтения сокета истекло - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь подключиться из синхронизированной функции Azure к стороннему SFTP-серверу, к которому у меня есть доступ, но я не контролирую его.Моя функция успешно работает локально при использовании эмулятора функций Azure, однако я получаю исключение («Время чтения сокета истекло после 30000 миллисекунд.») При попытке запуска в Azure.

Есть ли что-нибудь из сети?перспективу, которую мне нужно сделать, чтобы разрешить / настроить исходящие SFTP-соединения, или кто-то видит что-то не так с моим кодом ниже?

var ftpHost = Environment.GetEnvironmentVariable("SFTP:Server");
var ftpUser = Environment.GetEnvironmentVariable("SFTP:User");
var ftpPass = Environment.GetEnvironmentVariable("SFTP:Password");
var ftpDirectory = Environment.GetEnvironmentVariable("SFTP:WorkingDirectory");

log.Info($"Connecting to {ftpHost}"); //This outputs the correct values I would expect from my app settings
using (var sftp = new SftpClient(ftpHost, ftpUser, ftpPass))
{
    sftp.Connect(); //This throws the exception
    log.Info("Connected");

    var files = sftp.ListDirectory(ftpDirectory);
    log.Info("Directory listing successful");

    var exceptions = new List<Exception>();
    foreach (var file in files.Where(f => f.IsRegularFile))
    {
        try
        {
            log.Info($"{file.FullName} - {file.LastWriteTimeUtc}");
            var records = Process(sftp, file);
            log.Info($"Parsed {records.Count} records");

            sftp.DeleteFile(file.FullName);
            log.Info($"Deleted {file.FullName}");
        }
        catch (Exception ex)
        {
            exceptions.Add(ex);
        }
    }

    if (exceptions.Any())
    {
        throw new AggregateException(exceptions);
    }
}

Редактировать Я оставил свой ошибочный код там исбои кажутся непостоянными.Работая каждые 15 минут, у меня примерно 50% успеха.За последние 20 попыток 10 преуспели.

...