我们发现了正在发生的事情,这很奇怪。问题最终出在我们对 NLog.Targets.Stackify 的使用上。我们使用的是 1.25.4 版本。当我使用 Julian 建议的 NLog 调试器运行测试时,结果如下:
2017-01-09 10:14:43.5079 Info Loading assembly name: NLog.Targets.Stackify
2017-01-09 10:14:43.5449 Debug ScanAssembly('NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c')
2017-01-09 10:14:43.5929 Debug Start auto loading, location: C:\Dev\AffinityMain\platform\Integrity.WebJob.Rating\bin\Debug
2017-01-09 10:14:43.5929 Info Auto loading assembly file: C:\Dev\AffinityMain\platform\Integrity.WebJob.Rating\bin\Debug\NLog.Targets.Stackify.dll
2017-01-09 10:14:43.6039 Info NLog.Targets.Stackify, Version=1.18.6200.39247, Culture=neutral, PublicKeyToken=null. File version: 1.18.*. Product version: 1.25.4.
2017-01-09 10:14:43.6039 Debug ScanAssembly('NLog.Targets.Stackify, Version=1.18.6200.39247, Culture=neutral, PublicKeyToken=null')
2017-01-09 10:14:43.6249 Warn Type load exception. Exception: System.IO.FileLoadException: Could not load file or assembly 'NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c'
在解析配置时,紧随其后的是此错误:
System.ArgumentException: Target cannot be found: 'StackifyTarget'
文档表明 NLog 4.4 版足以运行这个库。但是,NLog 调试器表明它正在寻找版本 5.0,但没有找到它(它不会因为我们没有使用它)。现在,奇怪的是,它确实在这个版本中一次工作过,所以不知何故,对 NLog 5.0 的引用被卡在系统的某个地方,但我们找不到它,因为我们解决方案中的所有东西都在运行 NLog 4.4。我们检查了 csproj、包配置、应用程序配置、实际安装的 nuget 包——没有参考 5.0 版。
问题的答案是降级到 1.25.3。一旦我这样做,它就起作用了。然后我试图将它撞回 1.25.4,并再次遇到同样的问题。马特 - 关于关机 - 我们将把它添加到我们的网络作业中,然后我将监控我们是否看到完整的日志。谢谢大家的建议!