Я пытаюсь подключиться из синхронизированной функции 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 преуспели.