Я создал FTP-код для передачи файлов. Этот код работает отлично, за исключением того, что иногда приводит к ошибке 500. Точной ошибки есть -Fixing - System.Net.WebException: Удаленный сервер возвратил ошибку: (500) Ошибка синтаксиса, команда unrecognized
Error: System.Reflection.TargetInvocationException: Exception has
been thrown by the target of an invocation.
---> System.Net.WebException: The remote server returned an error:
(500) Syntax error, command unrecognized.
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.Net.CommandStream.Abort(Exception e)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetRequestStream()
at ST_772dn22cj49ndfddatee.csproj.ScriptMain.Main()
--- End of inner exception stack trace ---
Я заметил, что ошибка возникает, когда самый большой файл загружен, то есть около 290 КБ. Все остальные файлы меньше этого, и я не получаю от них исключения. Я не знаю, почему это происходит. Может кто-нибудь сказать мне, почему ?
Как в стороне, в случае, если вы заметите какую-то возможность улучшить мой код или логическую ошибку, пожалуйста, укажите это также. Я действительно не ищу обзоры кода, но его приветствую.
public void Main()
{
Boolean conditions = true;
if(conditions == true)
{
string fileLocation = "my windows directory";
string fileName = "fileName.extension";
string ftpFolder = @"/ftpFolder/";
Boolean ftpMode = true; //passive or active. True = passive
string ftpPassword = "password";
int ftpPort = 21;// the default
string ftpServerName = "server name";
string ftpUserName = "user name";
//Create an object to communicate with the server.
string ftpRequestString = "ftp://" + ftpServerName + ":"
+ ftpPort + ftpFolder + fileName;
try{
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create(ftpRequestString);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
//Set mode
if(ftpMode == true){
request.UsePassive = true;
}
//Copy the file to the request.
string filePath = @fileLocation + "\\" + fileName;
StreamReader sourceStream = new StreamReader(filePath);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
}
catch (WebException ex)
{
MessageBox.Show(ex.Message);
}//try-catch
}
}//main
У меня такая же проблема, и я не могу найти ответ. Вы нашли решение для этого @HappyCoder? Если да, то, пожалуйста, поделитесь им. Я начинаю щедрость на этом. Благодарю. – Steam