Wpf 我的配置设置到哪里去了?

Wpf 我的配置设置到哪里去了?,wpf,wcf,configuration,windows-services,shared-config,Wpf,Wcf,Configuration,Windows Services,Shared Config,在经历了一些漫长而复杂的故事之后,我发现了与此非常相似的代码,并且已经很好地使用了几个月。昨天我改变了很多东西,现在这个代码不再工作了 public void OpenConfig(string configDir) { if (string.IsNullOrWhiteSpace(configDir)) { configDir = AppDomain.CurrentDomain.BaseDirectory; } var sharedConfigPa

在经历了一些漫长而复杂的故事之后,我发现了与此非常相似的代码,并且已经很好地使用了几个月。昨天我改变了很多东西,现在这个代码不再工作了

public void OpenConfig(string configDir)
{
    if (string.IsNullOrWhiteSpace(configDir))
    {
        configDir = AppDomain.CurrentDomain.BaseDirectory;
    }
    var sharedConfigPath = Path.Combine(configDir, ConfigFileName);
    var map = new ExeConfigurationFileMap { ExeConfigFilename = sharedConfigPath };
    sharedConfig = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    logger.Trace("'{0}' set 'SharedConfigPath' to '{1}'.", GetType().Name, sharedConfig.FilePath);
}
然后,我得到如下配置值:

ServicePollingInterval = GetIntegerAppSetting("ServicePollingInterval"),
在哪里

但是,现在基本上是一夜之间,调用var settingTag=sharedConfig.AppSettings.Settings[settingName];将settingTag返回为null,因为该集合中没有appSettings项

我已经在这个项目上工作了几个月,我在一开始就使用了这个配置代码,因为我在同一个文件夹中运行了几个可执行文件,我希望它们都使用相同的配置。对于我没有对配置进行任何值得纪念的代码更改,我真的感到很困惑

有人能看到我可能搞砸了什么吗?有人能猜到我可能改变了什么外部影响吗?有人能猜到任何可能突然导致此配置对象的所有部分都为空的东西吗


我有一个怀疑,但无法追踪,那就是该应用程序运行时的用户身份发生了变化。这很复杂:我有一个托管在Windows服务中的WCF服务,由一个WPF应用程序使用。

反复试验得出了一些答案。使用单独的WCF库、主机和客户端项目进行编码和调试时,所有三个项目中都需要相同的配置设置。有时VS2013我不知道其他人在某个未知的过程中自动托管WCF库,因此,您需要库项目中的app.config副本,即使它不是可执行文件

private static int GetIntegerAppSetting(string settingName, bool throwOnMissing = false)
{
    string setting = null;
    if (settingTag != null)
    var settingTag = sharedConfig.AppSettings.Settings[settingName];
    {
        setting = settingTag.Value;
    }
    if (setting == null)
    {
        if (throwOnMissing)
        {
            logger.Trace("App Setting '{0}' not configured. Throwing an exception.", settingName);
            throw new EalsConfigurationException(settingName, "App Setting not configured.");
        }
        logger.Trace("App Setting '{0}' not configured. Defaulting to -1.", settingName);
        return -1;
    }

    int i;
    if (!int.TryParse(setting, out i))
    {
        logger.Trace("App Setting '{0}' not valid as Integer. Throwing an exception.", settingName);
        throw new EalsConfigurationException(setting, "App Setting '{0}' not valid as Integer.");
    }
    return i;
}