【发布时间】:2015-06-18 02:28:52
【问题描述】:
在 Windows Server 2008 上运行的 ASP.NET C# 应用程序
我发现 Git .idx 和 .pack 文件特别耐编程删除:
C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.idx
C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.pack
git clone 操作将文件创建为只读 - 但即使该位关闭,删除仍然存在问题:
var path = @"C:\github\my-org\my-repo\.git\objects\pack\pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx";
File.SetAttributes(path , FileAttributes.Normal);
File.Delete(path);
File.Delete(path) 代码抛出异常:
访问路径'pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx' 被拒绝。
由于路径不在我的站点目录中,我想知道是否需要为 ASP.NET 站点 AppPool 工作进程标识明确分配权限以在其应用程序域之外写入/删除文件夹/文件?
请注意,在我的 Windows 7 本地工作站上,调用删除目录操作的我的 nUnit 测试运行绿色。在调试器中,我可以证明一旦从所有文件中删除只读属性(如果存在),Directory.Delete(path,true) 操作就不会抛出。
【问题讨论】:
-
你能解释一下“特别有抵抗力”是什么意思吗?它们只是文件。 (除非其他进程同时打开了该文件。)
-
异常似乎表明存在锁,但没有——这个应用程序在专用远程服务器上执行,实际上同一个应用程序创建本地存储库
-
您是否在此服务器上运行了病毒扫描程序?如果病毒扫描程序在您尝试删除文件时正在扫描文件,它们通常会导致此类行为。