2014-01-20 97 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