我在一年前的c#中找到了一个ftp客户端类,并且已经在每晚上传文件的过程中使用它。几天前,我们开始有一个问题,它会超时。我不太熟悉这个,所以我不确定为什么会这样做。
当程序开始上传文件时,它会检查它是否已登录,如果没有,则会调用login方法。在那个方法中是这个代码块。
if (this.resultCode != 230)
{
this.sendCommand("PASS " + password);
if (!(this.resultCode == 230 || this.resultCode == 202))
{
this.cleanup();
throw new FtpException(this.result.Substring(4));
}
}
在说明this.sendCommand的行上(“通过”......它进入了这段代码。
private void sendCommand(String command)
{
if (this.verboseDebugging) Debug.WriteLine(command, "FtpClient");
Byte[] cmdBytes = Encoding.ASCII.GetBytes((command + "\r\n").ToCharArray());
clientSocket.Send(cmdBytes, cmdBytes.Length, 0);
this.readResponse();
}
如果我让程序运行,它会超时。但是,如果我逐步执行它到sendCommand方法,它执行正常。有人知道为什么当我单步执行它会工作正常吗?我们最终没有任何改变,我被告知客户端的任何结果都没有改变,所以我很难过。感谢。
答案 0 :(得分:0)
让它在调试模式下运行,当它冻结命中暂停时,你就可以确切地看到它挂了什么线。
答案 1 :(得分:0)
如果它开始传输 - 它将不需要再次登录,除非连接中断并且您的客户端尝试重新连接,这将导致重新连接。
我强烈建议查看客户端是否支持“NOOP”命令(用于在通过数据连接传输数据时保持控制连接处于活动状态)。这是FTP实现中最常见的问题。