I got a service coded in c# whoes deleted somes web site files hosted on iis, before an update. But sometime when i delete the files, they stay there.
If I try to delete them manually, via explorer, the file are not deletable, because they are in state "Delete pending".
There is the way my service try to delete the file
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);
}
It's there a way to avoid this state ?
What can i do to force the delete by c# code?
Could i release all process to the file by c# code ?
The environnement is
IIS 7.5 Windows 2008-r2 .net 4.0
Thanks
You'll want to find out what other process has the files open. I don't know how you'd do that programatically, but speaking as a sysadmin, the handle.exe utility from SysInternals (or their Process Explorer GUI tool) can show that to you real-time.
Then you'll want to either:
You can get a list of files that are on that state through here I don't know how your files end up in that state but the first way that comes to my mind is to rename and then delete the file there is a similar solution for C++ on SO here
In C# it should be something like