У меня есть сервис, закодированный на C #, который удалил некоторые файлы веб-сайтов, размещенные на iis, перед обновлением. Но иногда, когда я удаляю файлы, они остаются там.
Если я попытаюсь удалить их вручную через проводник, файл не удастся удалить, потому что они находятся в состоянии «Ожидание удаления».
Вот как моя служба пытается удалить файл
try
{
// Enlève tout les attributs sur le fichiers afin de s'assurer que le fichier n'est pas en lecture seul
File.SetAttributes(file, FileAttributes.Normal);
// Supprime le fichier
File.Delete(file);
}
Есть ли способ избежать этого состояния?
Что я могу сделать, чтобы принудительно удалить с помощью кода c #?
Могу ли я выпустить весь процесс в файл с помощью кода c #?
Окружающая среда
IIS 7.5 Windows 2008-r2 .net 4.0
Спасибо
Вы захотите узнать, в каком другом процессе файлы открыты. Я не знаю, как бы вы это сделали программно, но, выступая в качестве системного администратора, утилита handle.exe от SysInternals (или их инструмент GUI Process Explorer) может показать вам это в реальном времени.
Тогда вы захотите:
Вы можете получить список файлов, находящихся в этом состоянии, через Вот Я не знаю, как ваши файлы попадают в это состояние, но первый способ, который приходит мне в голову, - это переименовать, а затем удалить файл, есть аналогичное решение для C ++ на SO Вот
В C # должно быть что-то вроде
File.Move(oldFileName, newFileName);
File.Delete(newFileName);