Как удалить списка время ожидания при выборке большого объема данных через SFTP в C#?
Я получаю проблему тайм-аута списка при извлечении большого объема файлов с помощью sftp в c#. Я могу извлекать и скачивать файлы размером до 50 тысяч. Но если в диапазоне выше 70к или около того попадаешь ниже исключения:
ListTimeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Дал команду тайм-аут в области вызова базы данных через сервер Sql DB. Но проблема все равно остается.
Что я уже пробовал:
_listSftp.ListItemReceived += (s, e) => { SftpItem item = e.Item; objSFTPFile = new SFTPFile(); objSFTPFile.FileType = "DDS300"; objSFTPFile.Extension = "DDR"; objSFTPFile.Status = SFTPStatus.L.ToString(); objSFTPFile.FileName = item.Name.Trim(); objSFTPFile.FileSize = item.Size; objSFTPFile.Mode = SFTPMode.D.ToString(); objSFTPFile.BankCode = Common.BANKCODE; ListSFTPFile.Add(objSFTPFile); Common.WriteLog(MethodInfo.GetCurrentMethod().Name + " FileType: " + objSFTPFile.FileType + " FileName: " + objSFTPFile.FileName, ServiceThread.Listing.ToString()); // skip adding item to resulting collection e.Ignore(); }; // clear resulting collection first ListSFTPFile.Clear(); // issue directory listing SftpItemCollection List = _listSftp.GetList(GetSFTPServerPath("Files"));
и экономия
string strxml = DAL_Common.getXMLFromList(listInwardFile); DataSet dsDetails = new DataSet(); DbCommand DbCmd = DataAccessBase.Database.GetStoredProcCommand("DDS_SAVE_SFTP_DOWNLOAD_LIST"); DbCmd.CommandTimeout = 600; DataAccessBase.Database.AddInParameter(DbCmd, "@p_BankCode", DbType.String, strBankCode); DataAccessBase.Database.AddInParameter(DbCmd, "@p_xml", DbType.Xml, strxml); DataAccessBase.Database.AddOutParameter(DbCmd, "@p_error_code", DbType.String, 40); DataAccessBase.Database.AddOutParameter(DbCmd, "@p_error_msg", DbType.String, 1000); int i = DataAccessBase.Database.ExecuteNonQuery(DbCmd); int ErrorCode = Convert.ToInt32(DataAccessBase.Database.GetParameterValue(DbCmd, "@p_error_code").ToString()); Errormsg = DataAccessBase.Database.GetParameterValue(DbCmd, "@p_error_msg").ToString();