Файл "заблокирован" во время операции перемещения и выдает ошибку 401 - PullRequest
0 голосов
/ 02 июля 2018

У меня запущена служба Windows с локальной системной учетной записью

enter image description here

Что делает моя программа:

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

Соответствующая папка - это папка приложения iis, в которой удостоверение пула приложений - ApplicationPoolIdentity, расположенное в каталоге c: \ MyAppFolder.

Моя служба Windows выполняет свою работу несколько раз в день, и мои клиенты проверяют наличие новой версии каждые 5 минут (0,5,10,15 ...) и загружают этот файл.

Время от времени файл каким-то образом «блокируется» в файловой системе, а затем

  • IIS дает 401 ошибка
  • Файл не может быть удален

Мой первый вопрос, как мне воспроизвести эту ситуацию?

Один патч сделан коллегами:

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

Хотя этот патч, похоже, снова произошла ошибка,

Я могу подать заявку, также это решение.

Достаточно или необходимо этих решений?

Опять же, мой первый вопрос - важная «проблема репро» и понимаю, почему это происходит.

...