Windows服务应用程序配置文件正在进行验证并填充NULL

时间:2015-07-02 21:00:18

标签: c# service thread-safety app-config corruption

我在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服务进行通信所需的设置。应该注意的是,其中一些机器的互联网连接可能不稳定。

有没有人遇到类似的东西?这是一个线程问题吗?

非常感谢任何帮助。

0 个答案:

没有答案