nira.parmar Ответов: 0

Получить список файлов с 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 часов.

0 Ответов