我在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;
答案 0 :(得分:0)
因为strFolder
为空。在将值传递给方法之前检查该值:
if (strFolders != null && strFolders.Any(strHomedir.Contains))
{
}