Я пытаюсь загрузить zip-файл из SFTP и разархивировать его в памяти, чтобы обработать файл
Я использую SSH.Net для загрузки файла.
private static void processfilesfromftp(List<TSOracleMicrosDownLoadSetUp> list)
{
SftpClient sftp = HelperFunctions.GetClientConnection();
if (sftp.IsConnected)
{
var files = sftp.ListDirectory("/");
ZipFile zips = new ZipFile();
string path = string.Empty;
foreach(var file in files)
{
Stream unzippedEntryStream = new MemoryStream();
path = string.Format("/{0}", file.Name);
//byte[] arr = sftp.ReadAllBytes(file.FullName);
var stream = new BufferedStream(sftp.OpenRead(file.FullName));
//System.IO.TextReader textReader = new System.IO.StreamReader(stream);
//System.IO.MemoryStream mStream = new MemoryStream();
using (ZipFile zip = ZipFile.Read(stream))
{
ZipEntry e = zip[0];
e.Extract(unzippedEntryStream);
System.IO.TextReader textReader = new System.IO.StreamReader(unzippedEntryStream);
string data = textReader.ReadToEnd();
}
}
}
}
ошибка выброса потока памяти Исключение System.InvalidOperationException в
var stream = новый BufferedStream (sftp.OpenRead (file.FullName));
Обновлять
Ошибка не возникает, но конечный результат распакованного файла пуст.
Использование Framework 4.5.2 и Visual Studio 2017
Исключения в часах отладки ничего не значат. Отладчик не настолько умен, чтобы знать, что он не должен пытаться отображать Read / WriteTimeout, когда свойство CanTimeout потока имеет значение false. Ты знаешь что. Сообщение "истекло время ожидания" - это аналогичная проблема отладчика, оно должно исчезнуть, когда контрольному выражению требуется слишком много времени для получения результата. Не редкость, когда данные должны поступать с другой машины или должны быть созданы другим потоком, который находится в состоянии прерывания отладки. Так что это ничего интересного вам не скажет.
Как увеличить время ожидания. Я прошел через другую ветку и не нашел для нее никакого решения?
Было бы полезно, если бы вы поделились трассировкой стека.





Это скорее вопрос SSH.Net, а не конкретный Acumatica. Похоже, проблема связана с SSH-соединением.
Чтобы изменить тайм-аут, вы можете использовать SshClient.ConnectionInfo.Timeout. Но вам нужно перехватить исключение и аккуратно обработать его.
Вот пост с похожей проблемой.
Кстати, вы можете использовать включенный Библиотека Acumatica для чтения zip-файла.
Пожалуйста, предоставьте более подробную информацию об этом исключении: stacktrace, ...