.NET Process теряет доступ к общему ресурсу; Доступ восстановлен при перезапуске процесса - PullRequest
0 голосов
/ 23 апреля 2019

Я столкнулся со странной проблемой, которая проявляется только в производстве и только после того, как процесс запущен в течение нескольких дней, а иногда и недель.Код, вызывающий ошибку, очень прост.Он ищет в каталоге отчетов для удаления старых данных:

public void DeleteOldReports(){
    DateTime now=DateTime.Now;
    foreach(String filePath in 
        new DirectoryInfo(ReportPath)
            .GetFiles()
            .Where(x=>x.Name.StartsWith("webReport-",StringComparison.CurrentCultureIgnoreCase) && (now-x.LastWriteTime)>WebReportLifetime)
            .Select(x=>x.FullName)
            .ToList()
    ){File.Delete(filePath);}
}

Исключение выдается при вызове new DirectoryInfo(ReportPath).GetFiles(), который является простой операцией чтения файла.

Исключение:

System.UnauthorizedAccessException: доступ к пути '\\ inst7 \ appsupp \ btc_webreports' запрещен.в System.IO .__ ОшибкаSystem.IO.DirectoryInfo.InternalGetFiles (String searchPattern, SearchOption searchOption) в cf.core.WebReportManager.DeleteOldReports () в WebReportManager.cs: строка 26

Эта процедура работает нормально в течение нескольких дней или часто недель,но как только выдается это первое исключение, оно будет продолжать выдавать исключение при каждой попытке доступа.Это никогда не работает снова, пока процесс не будет перезапущен.

Теперь, если бы это случилось только один раз, а потом выздоровел, я бы не волновался.Возможно, inst7 был временно недоступен.Или, возможно, контроллер домена или какая-либо другая виртуальная машина, которая играет роль в определении доступа к общим ресурсам, была на короткое время недоступна.Но это не то, что здесь происходит.Это похоже на то, как будто какой-то определенный токен или право, позволяющий моему процессу получить доступ к этому пути, истек или был отменен.Перезапуск процесса немедленно решает проблему.

Как только процесс переходит в это плохое состояние, нет способа восстановить доступ, насколько я могу судить.Это, несмотря на тот факт, что я могу без проблем перейти к указанной папке в проводнике Windows, и, кроме того, тесты разрешений с помощью «Просмотр эффективного доступа» указывают на отсутствие проблем.

Все виртуальные машины, участвующие во взаимодействии, работаютСервер Windows 2016 на AWS.

Как я могу устранить эту проблему?

Best,

Festus

...