2014-01-20 120 views
0

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

这是在进行FTP传输时发生的。低于300KB的所有文件都将无错地传输。但只有一个错误传输。我如何找出原因?另外, 我如何获得与FtpStatusCode关联的号码?错误500的枚举名称= CommandSyntaxError ???

此代码(在保持部分)并没有帮助 -

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); 

    } 
} 
+0

也许还需要try块中的代码。 – user1378730

+0

@ user1378730 - 可能或肯定? – HappyCoder

回答

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路径非常长,则需要映像)。
+0

谢谢。我会检查1和2,看看问题的原因是什么。 – HappyCoder