我在200多台机器上安装了Windows服务。在少数机器上,它看起来完全随机,配置文件被破坏并填充NULL。这似乎是随机发生的。配置文件大小与安装时相同,但在记事本中打开时,它看起来是空的。在Notepad ++中打开时,可以看到NULL。
Windows服务托管2个进程。一个读取,并写入一个表示它处于活动状态的值。第二个进程只是从文件中读取。这些服务使用CRON调度程序启动。 Log4net没有报告故障。该服务刚停止,报告在进程尝试激活时无法加载配置文件。
此处显示了从配置文件读取和写入的代码。 ConfigurationManager使用静态方法,这些方法记录为线程安全。
public static class IsRunningProcesser
{
public static void SetRunning(bool isRunning)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings[Constants.IsRunning].Value =
isRunning.ToString();
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(Constants.AppSettings);
}
public static void ClearRunning()
{
SetRunning(false);
}
public static bool IsRunning()
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationManager.RefreshSection(Constants.AppSettings);
return !string.IsNullOrEmpty(config.AppSettings.Settings[Constants.IsRunning].Value) && (config.AppSettings.Settings[Constants.IsRunning].Value.ToLower() == "true");
}
}
这是主要的接触点,但是可以在许多地方访问配置文件。它还存储与这些进程配置使用的WCF服务进行通信所需的设置。应该注意的是,其中一些机器的互联网连接可能不稳定。
有没有人遇到类似的东西?这是一个线程问题吗?
非常感谢任何帮助。