【发布时间】:2010-12-22 11:26:56
【问题描述】:
有关此错误的一些背景知识:客户在其日志文件中收到此错误消息,支持人员尚未能够重现它。所以我正在审查代码,试图确定可能发生的情况。我通过查看他们的日志文件将其缩小到代码的这一部分。我没有编写此代码,但其目的是将 zip 文件 ftp 到远程服务器。所以问题是......
此代码的哪一行可能会引发“索引超出数组边界”异常?
FtpLib.FTPFactory ff = new FtpLib.FTPFactory();
try
{
ff.setRemoteHost(job.FTPHost);
ff.setRemoteUser(job.FTPUser);
ff.setRemotePass(job.FTPPW);
ff.login();
// Execute misc. extra commands
foreach (string command in job.Commands)
{
if (log.IsDebugEnabled)
log.Debug("JOB: " + job.ID + " -- FTP Command \"" + command + "\" sent...");
ff.sendCommand(command);
if (log.IsDebugEnabled)
log.Debug("JOB: " + job.ID + " -- Response: " + ff.getLastMessage());
}
try
{
ff.mkdir(job.FTPRemoteDir);
}
catch (IOException) { }
ff.chdir(job.FTPRemoteDir);
ff.setBinaryMode(true);
if (log.IsInfoEnabled)
log.Info("JOB: " + job.ID + " -- FTP UPLOAD: \"" + zipfile.Name + "\" to \"" + job.FTPHost + "/" + job.FTPRemoteDir + "/\"");
ff.upload(zipfile.FullName);
if (log.IsInfoEnabled)
log.Info("JOB: " + job.ID + " -- Completed.");
bFTPSuccess = true;
break;
}
提前致谢!
更新: 我想我们都同意问题出在 FTPLib 中,我会看看我们是否有它的来源。我发现这是一个晦涩难懂的错误,客户甚至无法始终如一地重现,所以这将是一个有趣的重点。我使用 Exception.StackTrace 和 Exception.ToString 函数添加了额外的调试日志记录。问题解决后我会再次更新,并尝试将正确答案奖励给正确的人,尽管每个人都提出了很好的建议。感谢您的帮助!
【问题讨论】:
-
这是什么语言?您应该将语言放在标签中。
-
哎呀,我以为我添加了 c#,但一定是不小心删除了它。我会解决的,谢谢。