Проблемы с удалением rebex sftp файла
Я получаю SftpException: No such file; File not found.
при использовании Rebex sftp's Sftp.DeleteFile(string filename
), что особенно странно, потому что я сначала проверяю, существует ли файл.
Вот соответствующий пример кода:
foreach (var file in fileList)
{
if(ftp.Connection.FileExists(file.Name))
{
try
{
ftp.Connection.DeleteFile(file.Name);
}
catch (SftpException ex)
{
Log.Error("Deletion failed.", ex);
}
}
else
{
Log.Debug(string.Format("'{0}' not found.", file.Name));
}
}
Онлайн-документы Rebex можно найти здесь для тех, кто не знаком с библиотекой.
Есть идеи, что здесь происходит?
1 ответ
Решение
Дэвид также задал этот вопрос на нашем форуме поддержки по адресу http://forum.rebex.net/questions/1635/sftpexception-no-such-file-file-not-found
Я также записываю решение здесь, потому что оно может пригодиться в подобных ситуациях.
- Файл существует на SFTP-сервере
- Приложение открывает поток, который блокирует файл на сервере
- Файл не может быть удален, и сервер сообщает "Нет такого файла; Файл не найден". сообщение об ошибке
- Закрытие этих потоков решает проблему, и теперь файл можно удалить.
К сожалению, сообщение об ошибке SFTP-сервера не очень помогло в этом случае. Можно было бы спросить, не будет ли более подходящим что-то вроде "отказано в доступе".