我想通过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)。实际上,它对我不起作用。有人可以给我这个案子的解决方案吗?