在Windows Server 2008上运行的ASP.NET C#app
我发现Git .idx和.pack文件特别耐编程删除:
C:\ github上\我-ORG \我回购\ git的\对象\包\包-905fbcfd5f24c5711de900f3946b4137d26df6d5.idx
C:\ github上\我-ORG \我回购\ git的\对象\包\包-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本地工作站上,调用delete dir操作的nUnit测试运行为绿色。在调试器中,我可以证明,一旦从所有文件(如果存在)中删除了只读属性,Directory.Delete(path,true)操作就不会抛出。
答案 0 :(得分:3)
进程正在处理该特定包文件(process explorer可以check that for you)
或者存在权限访问问题,例如libgit2sharp/issues/769:
当您尝试删除Windows不喜欢的只读文件以及对象git的对象数据库时,该消息看起来就像您所获得的消息(该索引文件为1)是只读的。
删除readonly标志允许我删除整个目录。