2013-02-11 2 views
1

Моя проблема заключается в том, что когда я просматриваю загруженный файл на моем ftp-сервере, на нем нет содержимого, он пуст. Почему это происходит, я что-то пропускаю в своем коде?Загрузка файла xml на ftp-сервер в C#, файл был успешно загружен, но в нем нет содержимого?

if (File.Exists("main.xml")) 
{ 
    using (Stream stream = new MemoryStream()) 
    { 
     stream.Position = 0; 
     stream.Seek(0, SeekOrigin.Begin); 

     string uri = String.Format("ftp://{0}/{1}/{2}", "host", "wwwroot", "main.xml"); 

     FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); 

     request.Credentials = new NetworkCredential("user", "pass"); 
     request.Method = WebRequestMethods.Ftp.UploadFile; 
     request.KeepAlive = false; 
     request.UseBinary = true; 
     request.UsePassive = true; 
     request.ContentLength = stream.Length; 
     request.EnableSsl = false; 

     int bufferLength = 2048; 
     byte[] buffer = new byte[bufferLength]; 
     int contentLength; 

     Stream ftpStream = request.GetRequestStream(); 
     contentLength = stream.Read(buffer, 0, bufferLength); 
     while (contentLength != 0) 
     { 
      ftpStream.Write(buffer, 0, contentLength); 
      contentLength = stream.Read(buffer, 0, bufferLength); 
     } 

     ftpStream.Flush(); 
     ftpStream.Close(); 
    } 
} 
else 
{ 
    MessageBox.Show("No file found."); 
} 

Но когда я пытаюсь вставить эту строку кода выше

MessageBox.Show(XDocument.Load("main.xml").ToString()); 

имеет выход,

Но когда я пытаюсь установки точки останова, когда он достигнет while (contentLength != 0) это не входит к нему

ответ

1

EDIT

ОК это то, что должно было быть

using (Stream stream = File.Open("main.xml", FileMode.Open)) 
+0

, так что это означает, что все изменения ftpStream тоже перевернутся? – MekeniKine

+0

имеет ошибки «не может назначаться потоку, потому что это переменная using» – MekeniKine

+0

только что заметил, что вы не указали, к чему обращается ваш ftpstream, так что вам это тоже нужно, см. Редактирование. – john

1

Если файл, который вы пишете, всегда пуст, это звучит так, будто вы на самом деле ничего не получаете. Первое, что нужно проверить, - это увидеть, действительно ли это while (contentLength != 0).

Обновление: Кроме того, как указал Джон, назначение потока запросов плохое!

+0

ой я вижу, что на самом деле не входит в то время (ContentLength! = 0), но мой файл не пуст, почему что? – MekeniKine