C#ftp客户端类的奇怪行为

时间:2010-03-17 18:10:20

标签: c# .net ftp-client

我在一年前的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方法,它执行正常。有人知道为什么当我单步执行它会工作正常吗?我们最终没有任何改变,我被告知客户端的任何结果都没有改变,所以我很难过。感谢。

2 个答案:

答案 0 :(得分:0)

让它在调试模式下运行,当它冻结命中暂停时,你就可以确切地看到它挂了什么线。

答案 1 :(得分:0)

如果它开始传输 - 它将不需要再次登录,除非连接中断并且您的客户端尝试重新连接,这将导致重新连接。

我强烈建议查看客户端是否支持“NOOP”命令(用于在通过数据连接传输数据时保持控制连接处于活动状态)。这是FTP实现中最常见的问题。