在C#中将一个xml文件上传到ftp服务器,文件已成功上传,但其中没有内容

本文关键字:文件 成功 服务器 ftp 一个 xml | 更新日期: 2023-09-27 17:58:40

我的问题是,当我在ftp服务器上查看上传的文件时,上面没有内容,它是空的。为什么会发生这种情况?我的代码中遗漏了什么?

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)时,它不会进入

在C#中将一个xml文件上传到ftp服务器,文件已成功上传,但其中没有内容

编辑

好吧,这就是

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

如果您正在编写的文件总是空的,那么听起来您实际上并没有得到任何文件。首先要检查的是查看是否首先输入了while (contentLength != 0)

更新:此外,正如John所指出的,请求流分配是糟糕的!