C# log4net DLL损坏(设置为全零)
我们最近开始看到一个问题,log4net.dll已损坏-具体来说,它的大小正确,但包含所有零。这会导致BadImageFormatException(最终包装为TypeInitializationExceptions,因为我们倾向于在每个类中静态初始化ILog实例)。这种情况偶尔发生,没有明显的模式。卸载并重新安装我们的应用程序似乎可以“修复”它,因为我们还没有在同一台机器上两次看到这个问题——但这可能只是巧合 我们的应用程序由一个Windows服务和一个通过命名管道进行通信的“常规”Windows应用程序组成(没有什么特别之处)。我们已经在常规应用程序中使用log4net很长时间了(在我加入项目之前),但直到最近才将log4net添加到服务中。我们在两个应用程序中使用相同的机制对其进行初始化,具体如下:C# log4net DLL损坏(设置为全零),c#,.net,windows-services,log4net,corruption,C#,.net,Windows Services,Log4net,Corruption,我们最近开始看到一个问题,log4net.dll已损坏-具体来说,它的大小正确,但包含所有零。这会导致BadImageFormatException(最终包装为TypeInitializationExceptions,因为我们倾向于在每个类中静态初始化ILog实例)。这种情况偶尔发生,没有明显的模式。卸载并重新安装我们的应用程序似乎可以“修复”它,因为我们还没有在同一台机器上两次看到这个问题——但这可能只是巧合 我们的应用程序由一个Windows服务和一个通过命名管道进行通信的“常规”Windo
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
我们通常在每个类中静态实例化ILog实例,即:
private static readonly ILog _log = LogManager.GetLogger(typeof (SomeClass));
到目前为止,我们已经考虑了以下问题,但没有任何确凿证据得出结论:
同样,如果您有任何想法,我们将不胜感激。您可以尝试一件事:将DLL安装到GAC中,看看它是否被损坏…@Yahia:谢谢您的建议,我们最终可能会走这条路。唯一的问题是,它的发生是如此随机,以至于我们没有一个确定的测试来确定它是否被修复——我们基本上只能等待,看看它是否停止发生。仍然希望有人能对正在发生的事情有所了解……我们的产品也是一个windows服务,带有命名管道等。我们也很少看到这个问题(两次,每次都是从一个站点的许多相同图像中随机抽取一些机器)。在每种情况下,我们实际上都有从dll中写入的日志,在某个东西将dll归零之前很短一段时间,因此这不是安装/更新过程。log4net本身也没有问题,因为我们的一些其他DLL已归零。倾向于反病毒,其中一个有Sophos,另一个有McAffee