C# 在没有读取权限的情况下将文件上载到FTP服务器

C# 在没有读取权限的情况下将文件上载到FTP服务器,c#,ftp,ftpwebrequest,ftpwebresponse,C#,Ftp,Ftpwebrequest,Ftpwebresponse,我想通过FTP帐户将一些备份上传并存储到另一台服务器。 此帐户只有读取权限,没有写入权限,以防止攻击者删除我的备份 因此,我开始使用完全权限(即读+写)编写解决方案。这是我的代码的外观:此代码当前正在工作 string file = @"C:\1.html"; FtpWebRequest ftpClient = (FtpWebRequest)FtpWebRequest.Create(new Uri(ConfigurationManager.AppSettings[

我想通过FTP帐户将一些备份上传并存储到另一台服务器。 此帐户只有读取权限,没有写入权限,以防止攻击者删除我的备份

因此,我开始使用完全权限(即读+写)编写解决方案。这是我的代码的外观:此代码当前正在工作

        string file = @"C:\1.html";
        FtpWebRequest ftpClient = (FtpWebRequest)FtpWebRequest.Create(new Uri(ConfigurationManager.AppSettings["FTPUrl"]) + @"/" + Path.GetFileNameWithoutExtension(file));
        ftpClient.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FtpUserName"], ConfigurationManager.AppSettings["FtpPassword"]);
        ftpClient.Method = WebRequestMethods.Ftp.UploadFile;
        ftpClient.UseBinary = true;
        ftpClient.KeepAlive = true;
        FileInfo fi = new FileInfo(file);
        ftpClient.ContentLength = fi.Length;
        byte[] buffer = new byte[4097];
        int bytes = 0;
        int total_bytes = (int)fi.Length;
        System.IO.FileStream fs = fi.OpenRead();
        System.IO.Stream rs = ftpClient.GetRequestStream();
        while (total_bytes > 0)
        {
            bytes = fs.Read(buffer, 0, buffer.Length);
            rs.Write(buffer, 0, bytes);
            total_bytes = total_bytes - bytes;
        }
        fs.Close();
        rs.Close();
但是,当我删除读取权限时,它就不再工作了。 有问题的代码行是:

    System.IO.Stream rs = ftpClient.GetRequestStream();
错误是:

中发生类型为“System.Net.WebException”的未处理异常 System.dll

其他信息:远程服务器返回错误:550 文件不可用,例如,找不到文件,无法访问


从理论上讲,在没有读取权限的情况下上传文件似乎也可以使用FileZilla。实际上,这对我不起作用。有人能给我一个解决这个问题的方法吗?

在我看来,您得到的是用于阅读的requeststream。当您尝试读取而您没有读取权限时,它会认为该文件不存在。现在,如果你试图写它应该工作在你的问题开始时,你说你没有写权限。你有读写混淆吗?没有,我们开始开发没有读写限制的代码。此操作完成后,我们删除了读取权限。