我有一个用 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 工具)可以实时向您显示这一点。
然后,您将需要执行以下操作之一:
- 避免导致文件被其他进程锁定的情况,
- 如果可以安全地关闭手柄。