检查FTP目录是否存在错误

时间:2014-07-29 15:22:01

标签: c# linq ssis

我在SSIS中有一个ftp脚本任务,我正在检查一个名为" Home"的目录。存在。如果它,我正在使用该目录。如果它不是我不想使用该目录。它在Home目录存在时工作正常,但在不存在时会抛出错误。 我很确定它在这里引发了错误。

if (strFolders.Any(strHomedir.Contains))

[]错误:System.ArgumentNullException:值不能为null。 参数名称:source    在System.Linq.Enumerable.Any [TSource](IEnumerable 1 source, Func 2谓词)    在ST_eaa7bc4824c348d1ad678ec3ceec2a33.ScriptMain.Main()

感谢任何帮助。

ConnectionManager ftpManager = null;
        FtpClientConnection ftpConnection = null;
        string[] strFolders = null;
        string[] strFiles = null;
        string strHomedir = "Home";
        string strFTPPassword = Dts.Variables["$Project::FTP_Password"].GetSensitiveValue().ToString();
        string strRemotePath = Dts.Variables["strFTPDirectory"].Value.ToString();
        string localfile = Dts.Variables["strIQRFileName"].Value.ToString();
        string[] localfilearray = new string[] { localfile };

        try
        {
            ftpManager = Dts.Connections["FTPServer"];
            ftpConnection = new FtpClientConnection(ftpManager.AcquireConnection(null));
            ftpConnection.ServerPassword = strFTPPassword;
            ftpConnection.Connect();
            ftpConnection.SetWorkingDirectory(strRemotePath);
            ftpConnection.GetListing(out strFolders, out strFiles);
            if (strFolders.Any(strHomedir.Contains))
            {
                strRemotePath = strRemotePath + "/" + strHomedir;
            }
            ftpConnection.SendFiles(localfilearray, strRemotePath, true, false);
        }

        catch (Exception ex)
        {
            Dts.Events.FireError(-1, string.Empty, ex.ToString(), string.Empty, 0);
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
        finally
        {
            ftpConnection = null;
            ftpManager = null;
        }
        Dts.TaskResult = (int)ScriptResults.Success;

1 个答案:

答案 0 :(得分:0)

因为strFolder为空。在将值传递给方法之前检查该值:

if (strFolders != null && strFolders.Any(strHomedir.Contains))
{
}