【发布时间】:2020-07-30 19:07:32
【问题描述】:
你好。
我在我正在处理的当前脚本中发现了一个问题。
当我尝试使用 FTPWebRequest 从 FTP URI 中删除文件时 - 我遇到了一个错误,它实际上确实找到了文件(检查存在),但是 - 它只是出于某种原因没有删除它。
我可以找到该文件,并通过我的脚本对其进行编辑 - 没问题;如果被问到,它只是不会触发删除。让我给你一个启动它的 ActionResult 的例子。
if (server.Protocol.Equals("FTP"))
{
Uri serverUri = null;
serverUri = new Uri($"{server.Server}/TheIsle/Saved/Databases/Survival/Players/{dino.SteamId}.json", UriKind.Absolute);
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
throw new FileNotFoundException();
}
var isDeleted = DinosaurWorker.DeleteTextFromFtpURI(config, _context, serverUri, dino);
if (isDeleted)
return Ok();
return Unauthorized();
}
正如您在此处看到的,正在调用 DeleteTextFromFtpURI (isDeleted)
这是 DeleteTextFromFTPURI - 它应该包括:
WebRequestMethods.Ftp.DeleteFile;
internal static bool DeleteTextFromFtpURI(NetworkConnection config, ApplicationDbContext context, Uri serverURI, Dinos dino, string user = "")
{
WebClient request = new WebClient();
request.Credentials = new NetworkCredential(config.Username, config.Password);
try
{
byte[] newFileData = request.DownloadData(serverURI);
string fileString = Encoding.UTF8.GetString(newFileData);
var player = JsonConvert.DeserializeObject<Player>(fileString);
var dinosaurDbName = dino.Dinosaur.GetAttribute<DisplayAttribute>().Name;
if (player.CharacterClass == dinosaurDbName && player.Growth == "1.0")
{
SavePlayer(context, dino, player);
var x = JsonConvert.SerializeObject(player);
var buffer = Encoding.UTF8.GetBytes(x);
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(serverURI);
ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;
ftpRequest.Credentials = new NetworkCredential(config.Username, config.Password);
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
response.Close();
}
LogAction(context, dino.SteamId, $"Dinosaur: {player.CharacterClass} should have been deleted", user);
return true;
}
catch (Exception e)
{
return false;
}
}
LogAction 完成,我可以在网站日志中看到该文件应该被删除,但是 - 我仍然能够看到该文件。
我再说一遍,FTP 连接确实有效,它确实检查文件是否存在 - 它确实通过 ftp 找到了文件,但没有发生删除。
我已经检查了用户文件夹权限,我的网站可以很好地编辑文件。它只是不会删除。
最好的问候。
【问题讨论】: