我有一个使用本地系统帐户运行的Windows服务

enter image description here

我的程序做的是:

if (File.Exists(outputPath))
{
    File.Delete(outputPath);
}
File.Move(archivePath, outputPath);

相关文件夹是iis的应用程序文件夹,其应用程序池的标识是位于c:\ MyAppFolder下的ApplicationPoolIdentity .

我的Windows服务每天都会执行几次,我的客户每5分钟检查一次是否有新版本(0,5,10,15 ...)并下载该文件 .

有时,文件以某种方式“锁定”在文件系统上

  • iis给出401错误

  • 无法删除文件

My first question how can I repro this situation?

同事们做的一个补丁是:

var fs = File.GetAccessControl(outputPath);
fs.SetAccessRuleProtection(false, false);
File.SetAccessControl(outputPath, fs);

虽然这个补丁,似乎再次发生错误,

我也可以申请,this解决方案 .

这些解决方案是否足够或必要?

我的第一个问题再次是重要的“责备问题”,并理解为什么会发生这种情况 .