找到FTP错误的原因?

时间:2014-01-20 01:19:31

标签: c# .net ftp

如何找到FTP 500错误的确切原因 - System.Net.WebException:远程服务器返回错误:(500)语法错误,命令无法识别

这是在进行FTP传输时发生的。低于300KB的所有文件都会毫无错误地传输。但只有一个是错误转移的。我如何找出原因?另外,怎么做 我得到一个与FtpStatusCode相关的数字?错误500的枚举名称= CommandSyntaxError ???

此代码(在catch部分中)没有帮助 -

catch (WebException webex)
{
    FtpWebResponse ftpWebResponse = (FtpWebResponse) webex.Response;
    if(ftpWebResponse != null){

        Stream stream = ftpWebResponse.GetResponseStream();
        StreamReader streamReader = new StreamReader(stream, true);

        string error = ftpWebResponse.ToString();
        string respStream = "";

        try
        {
            respStream = streamReader.ReadToEnd();
        }
        finally
        {
            streamReader.Close();
        }

        MessageBox.Show("to string " + error + Environment.NewLine + 
        "stream " + streamReader);

    }
}

1 个答案:

答案 0 :(得分:0)

500是来自FTP服务器的代码。您可以在此处查看FTP返回代码的详细信息: http://en.wikipedia.org/wiki/List_of_FTP_server_return_codes

“500系列:语法错误,命令无法识别且未执行请求的操作。这可能包括命令行太长等错误。”

要检查的事项:

  1. 文件名中是否有unicode或“怪异”字符?
    并非所有FTP服务器都支持unicode。在这种情况下,最简单的选择 - 如果您被允许这样做 - 是删除或替换任何非ASCII字符。实际上,使用FTP处理unicode是非常困难的,所以如果这个解决方案没问题,那就是最简单的。
    或者,您可以使用原始FTP命令“FEAT UTF8”检查您的FTP服务器是否支持unicode。即便如此,您还需要发送原始命令“OPTS UTF8 ON”来启用它。 (我的猜测是FTPWebRequest自动发送“OPTS UTF8 ON”。)
  2. 文件路径是否非常长? 这可能导致服务器的路径超出字符长度限制(例如:如果服务器的homedir是一条非常长的路径,则成像)。