Назад | Перейти на главную страницу

Попробуйте удалить файлы, используемые IIS

У меня есть сервис, закодированный на 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) может показать вам это в реальном времени.

Тогда вы захотите:

  1. Избегайте условия, при котором файл блокируется другим процессом,
  2. Закройте ручку, если можете сделать это безопасно.

Вы можете получить список файлов, находящихся в этом состоянии, через Вот Я не знаю, как ваши файлы попадают в это состояние, но первый способ, который приходит мне в голову, - это переименовать, а затем удалить файл, есть аналогичное решение для C ++ на SO Вот

В C # должно быть что-то вроде

File.Move(oldFileName, newFileName);
File.Delete(newFileName);