Получить список файлов с ftp сервера
всем привет,
Я разработал одну службу windows в .net, она используется для передачи файлов с FTP-сервера на локальный сервер. Он просматривает файлы на ftp-сервере через каждые 5 минут и копирует файл с FTP на сервер. Но он прекрасно работает в течение десяти-пятнадцати часов после этого он постоянно выдает ошибку, как показано ниже:".Error At Getlist():время выполнения операции истекло". пожалуйста, предложите мне модификацию.
Код для получения списка имен файлов ниже :
public string[] GetFileList() { string[] downloadFiles; StringBuilder result = new StringBuilder(); WebResponse response = null; StreamReader reader = null; try { FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("uri")); reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential("Abc", "Abc"); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; reqFTP.Proxy = null; reqFTP.KeepAlive = false; reqFTP.UsePassive = false; response = reqFTP.GetResponse(); reader = new StreamReader(response.GetResponseStream()); string line = reader.ReadLine(); while (line != null) { result.Append(line); result.Append("\n"); line = reader.ReadLine(); } // to remove the trailing '\n' result.Remove(result.ToString().LastIndexOf('\n'), 1); return result.ToString().Split('\n'); } catch (Exception ex) { if (reader != null) { reader.Close(); } if (response != null) { response.Close(); } downloadFiles = null; WriteLog("Error at GetFileList :>" + ex.Message); return downloadFiles; } }
Pheonyx
Если вы подключаетесь к FTP-серверу каждые 5 минут, есть вероятность, что через некоторое время сервер заблокирует ваше соединение.
На какой линии происходит "тайм-аут"?
nira.parmar
System.Net.FtpWebRequest.GetResponse();
На этой линии происходит тайм-аут.
Поэтому, пожалуйста, скажите мне, что нужно сделать, чтобы проверить, доступны файлы на сервере или нет?
gggustafson
Это то, что называется "долгоживущей программой". Возможно, вы захотите выключать и перезапускать процесс каждые 10 часов. Если это не сработает, вы можете подумать, что что-то еще на локальном сервере может вмешиваться. Если это так, вы можете рассмотреть возможность перезагрузки локального сервера каждые десять часов.
nira.parmar
Пожалуйста, скажите мне, как избежать тайм-аута. это происходит через 10-15 часов.