【问题标题】:exe.config file getting deleted when console app is run and failsexe.config 文件在控制台应用程序运行并失败时被删除
【发布时间】:2018-03-01 11:20:32
【问题描述】:

我有一个控制台应用程序,它似乎在失败时删除了它的 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 文件实例,因此希望有人可以帮助我解决这个深奥的问题。

编辑:有关信息,调度系统是 Cisco Tidal

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

【问题讨论】:

  • 很可能它与您的代码无关,它可能是环境问题,因此我们能否提供帮助值得怀疑。

标签: c# nlog configurationmanager


【解决方案1】:

我找到了问题。确实是 NLog。当文件翻转时,它意味着删除我们配置中除了最后 12 个翻转文件之外的所有文件。然而,有一个错误在于它试图删除的内容不止于此 - 包括应用程序 exe 本身。幸运的是,它在使用中失败了。我会在 github 上向 nlog 社区提出一个错误

更新:出现错误:https://github.com/NLog/NLog/issues/2607。社区建议该配置不受支持,解决方法是拒绝它而不是暴露这种意外行为。希望会被修复以避免其他人出现这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多