private void Download() { try { string type, siteip, userid, password, renamefile, port; //连接FTP using (DataTable dt = DB.GetSiteProfileDetail(sitename)) { if (dt.Rows.Count == 0) { MessageBox.Show("Can't find ftp setting, please check", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } type = dt.Rows[0]["Type"].ToString(); siteip = dt.Rows[0]["SiteIP"].ToString(); userid = dt.Rows[0]["UserID"].ToString(); password = Security.Decrypt(dt.Rows[0]["Password"].ToString()); renamefile = dt.Rows[0]["RenameFile"].ToString(); ftppath = ftppath.Substring(sitename.Length, ftppath.Length - sitename.Length); port = dt.Rows[0]["Port"].ToString(); } ActionBLL.Action OnStepAction = ActionBLL.GetAction.GetActionType("Download"); if (isfolder == "N") { //文档 OnStepAction.RunAction(this, 1, type, sitename, siteip, userid, password, port, renamefile, "Override", "Download", ftppath, "N", localpath, "N"); //OnStepAction.RunAction(this, 1, sitename, siteip, userid, password, "Download", ftppath, "N", localpath, "N"); } else { //文件夹 OnStepAction.RunAction(this, 1, type, sitename, siteip, userid, password, port, renamefile, "Override", "Download", ftppath, "Y", localpath, "Y"); //OnStepAction.RunAction(this, 1, sitename, siteip, userid, password, "Download", ftppath, "Y", localpath, "Y"); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { this.Dispose(); } }
public void RunStepByStep(frmMain fm, int iRow) { string logname = "Log_" + DateTime.Today.ToString("yyyyMMdd") + ".txt"; string type, sitename, siteip, userid, pwd, renamefile, port; string connectresult = ""; string Step, Action, RemoteFileFolder, RemoteIsFolder, LocalFileFolder, LocalIsFolder, FileExistAction; try { Tool.SaveLog(logname, "ScheduleName: " + SchName + "\t\tstart"); using (DataTable dt = DB.GetBLLSchRunStep(SchName)) { DataTable dtSiteProfile = DB.GetBLLSiteProfile(SchName); if (dt.Rows.Count == 0) { throw new Exception("Can't find a site profile for this schedule"); } type = dtSiteProfile.Rows[0]["Type"].ToString(); sitename = dtSiteProfile.Rows[0]["SiteName"].ToString(); siteip = dtSiteProfile.Rows[0]["SiteIP"].ToString(); userid = dtSiteProfile.Rows[0]["UserID"].ToString(); pwd = Security.Decrypt(dtSiteProfile.Rows[0]["Password"].ToString()); renamefile = dtSiteProfile.Rows[0]["RenameFile"].ToString(); port = dtSiteProfile.Rows[0]["Port"].ToString(); //先测试一下连接是否成功,如果不成功看一下是否有设置重连次数,有的话按时间间隔重连 #region 重连 //string logfilename = "Log_View_" + DateTime.Today.ToString("yyyyMMdd") + ".txt"; int i = 1; ActionBLL.Action testconnect = null; while (i <= Para.RECONNECTTIMES) { testconnect = ActionBLL.GetAction.GetActionType("TestFtpConnection"); connectresult = testconnect.RunAction(fm, type, sitename, siteip, userid, pwd, port); if (connectresult != "OK") { //Tool.SaveLog(logfilename, "Test connect reconnect-->" + i.ToString()); i++; continue; } else { break; } } testconnect = null; //MessageBox.Show(connectresult); //return; if (connectresult != "OK") { fm.SetMessage(iRow, "Connect Error:" + connectresult, 0); Tool.SaveErrorLog("ErrorLog_" + DateTime.Today.ToString("yyyyMMdd") + ".txt", "ScheduleName: " + SchName + "\t" + connectresult); using (DataTable dtReconnect = DB.GetReconnectTimesAndInterval(SchName)) { if (dtReconnect.Rows.Count > 0) { int retimes = Convert.ToInt32(dtReconnect.Rows[0]["ReconnectTimes"].ToString()); if (retimes > 0) { int reinterval = Convert.ToInt32(dtReconnect.Rows[0]["ReconnectInterval"].ToString()); int ireconnecttimes = 1; while (ireconnecttimes <= retimes) { string errormessage = "Connect Error: It'll try connect to " + type + " at " + DateTime.Now.AddMinutes(reinterval).ToString("HH:mm:ss") + " for the " + ireconnecttimes.ToString() + "/" + retimes.ToString() + " times"; fm.SetMessage(iRow, errormessage, 0); Tool.SaveErrorLog("ErrorLog_" + DateTime.Today.ToString("yyyyMMdd") + ".txt", "ScheduleName: " + SchName + "\t" + errormessage); errormessage = null; Application.DoEvents(); System.Threading.Thread.Sleep(60000 * reinterval); i = 1; while (i <= Para.RECONNECTTIMES) { testconnect = ActionBLL.GetAction.GetActionType("TestFtpConnection"); connectresult = testconnect.RunAction(fm, type, sitename, siteip, userid, pwd, port); if (connectresult != "OK") { //Tool.SaveLog(logfilename, "Test connect reconnect-->" + i.ToString()); i++; continue; } else { break; } } //testconnect = ActionBLL.GetAction.GetActionType("TestFtpConnection"); //connectresult = testconnect.RunAction(fm, type, sitename, siteip, userid, pwd, port); ireconnecttimes++; if (connectresult == "OK") { break; } } } } } } if (connectresult != "OK") { throw new Exception("get connection fail-->" + connectresult); } #endregion foreach (DataRow dr in dt.Rows) { Step = dr["Step"].ToString(); Action = dr["Action"].ToString(); RemoteFileFolder = dr["RemoteFileFolder"].ToString(); RemoteIsFolder = dr["RemoteIsFolder"].ToString(); LocalFileFolder = dr["LocalFileFolder"].ToString(); LocalIsFolder = dr["LocalIsFolder"].ToString(); FileExistAction = dr["FileExistAction"].ToString(); Tool.SaveLog(logname, "ScheduleName: " + SchName + "\tAction: " + Action + "\tstart\tStep:" + Step + "\tRemoteFileFolder:" + RemoteFileFolder + "\tRemoteIsFolder:" + RemoteIsFolder + "\tLocalFileFolder:" + LocalFileFolder + "\tLocalIsFolder:" + LocalIsFolder + "\tFileExistAction:" + FileExistAction); ActionBLL.Action OnStepAction = ActionBLL.GetAction.GetActionType(Action); try { if (Action == "Upload" || Action == "Download") { OnStepAction.RunAction(fm, iRow, type, sitename, siteip, userid, pwd, port, renamefile, FileExistAction, Action, RemoteFileFolder, RemoteIsFolder, LocalFileFolder, LocalIsFolder); } else if (Action == "MoveLocalFileToBackupFolder") { OnStepAction.RunAction(fm, iRow, RemoteFileFolder, LocalIsFolder, LocalFileFolder, "Y"); } else { OnStepAction.RunAction(fm, iRow, type, sitename, siteip, userid, pwd, port, Action, RemoteFileFolder, RemoteIsFolder, LocalFileFolder, LocalIsFolder); } Tool.SaveLog(logname, "ScheduleName: " + SchName + "\tAction: " + Action + "\tfinish"); } catch (Exception ex) { throw new Exception("Step " + Step + " error: " + ex.Message); } finally { OnStepAction = null; } } } Tool.SaveLog(logname, "ScheduleName: " + SchName + "\t\tfinish"); } catch (Exception ex) { throw new Exception(ex.Message); } finally { logname = null; type = null; sitename = null; siteip = null; userid = null; pwd = null; renamefile = null; port = null; connectresult = null; Step = null; Action = null; RemoteFileFolder = null; RemoteIsFolder = null; LocalFileFolder = null; LocalIsFolder = null; FileExistAction = null; GC.Collect(); } }