尝试删除IIS使用的文件

我得到了一个在C#中编码的服务,在更新之前删除了一些托pipe在iis上的网站文件。 但有时当我删除文件,他们呆在那里。

如果我尝试手动删除它们,通过资源pipe理器,该文件是不可删除的,因为他们处于“删除挂起”状态。

有我的服务试图删除文件的方式

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

谢谢

你会想知道哪些进程有文件打开。 我不知道如何以编程方式执行,但是作为系统pipe理员讲话,SysInternals(或其Process Explorer GUI工具)中的handle.exe实用程序可以向您显示实时。

那么你会想要:

  1. 避免造成文件被其他进程locking的情况,
  2. 如果可以安全地closures手柄。

你可以通过这里得到这个状态的文件列表我不知道你的文件是如何在这个状态下结束的,但是我想到的第一种方法是重命名然后删除文件,这里有一个类似的解决scheme在这里的 C ++

在C#中应该是这样的

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