尝试删除 IIS 使用的文件

尝试删除 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

谢谢

答案1

您需要找出哪个其他进程打开了这些文件。我不知道您如何通过编程来实现这一点,但作为一名系统管理员,SysInternals 的 handle.exe 实用程序(或其 Process Explorer GUI 工具)可以实时向您显示这一点。

然后,您将需要执行以下操作之一:

  1. 避免导致文件被其他进程锁定的情况,
  2. 如果可以安全地关闭手柄。

答案2

您可以通过以下方式获取处于该状态的文件列表这里 我不知道你的文件是如何变成这种状态的,但我首先想到的方法是重命名然后删除该文件,在 C++ 上有一个类似的解决方案这里

在 C# 中它应该是这样的

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

相关内容