运行控制台应用程序时,exe.config文件被删除并失败

问题描述 投票:0回答:1

我有一个控制台应用程序,似乎在失败时删除了它的exe.config文件。故障记录为

2018-03-01 00:16:49.4742 - ERROR: System.IO.IOException: The device is not ready.

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)
at System.IO.DirectoryInfo.GetFiles(String searchPattern)
at [my code]...

控制台应用程序由调度程序运行,并在大约8分钟后重新运行,因此失败但没有输出。随后的调查显示exe.config丢失了。恢复丢失的文件然后允许应用程序按预期运行。初始运行在半夜完成,并在计划应用程序中手动触发重新运行,因此有人手动删除文件的可能性很小。在测试环境中也会发生这种情况。

我无法在stackoverflow或其他地方找到任何exe.config文件被删除的实例,所以希望有人可以帮助我解决这个深奥的问题。

编辑:有关信息,调度系统是思科潮

编辑2:配置文件的删除似乎与每月滚动日志文件的nlog相关联 - 这是其他环境中的故障​​模式,现在今天早上在本地

c# nlog configurationmanager
1个回答
0
投票

我发现了这个问题。确实是NLog。当文件翻转时,它意味着删除我们配置中除了最后12个翻转文件之外的所有文件。但是有一个错误,它试图删除很多 - 包括应用程序exe本身。幸运的是,这在使用中失败了。我将在github上提出nlog社区的错误

更新:提出的bug:https://github.com/NLog/NLog/issues/2607。社区已经建议不支持配置,并且修复将拒绝它而不是暴露这种意外行为。希望能够修复以避免其他任何人出现此问题

© www.soinside.com 2019 - 2024. All rights reserved.