ConfigurationManager.OpenExeConfiguration方法不返回键的值

时间:2013-06-24 13:02:05

标签: c# wpf config configuration-files

我正在使用 ConfigurationManager.OpenExeConfiguration 方法尝试从appSettings dynamicaly获取密钥。我已将文件更新为dynamicaly所以更新后我试图打开它并获取新值新钥匙。

实施例: 在beggining我的文件看起来像:

<appSettings>
 <add key = "CZH" value = "Chezch Republic"/>
 <add key = "DEN" value = "Denmark"/>
</appSettings>

并且在某些时候我正在为此部分添加一个新的键/值对,它看起来像:

 <appSettings>
     <add key = "CZH" value = "Chezch Republic"/>
     <add key = "DEN" value = "Denmark"/>
     <add key = "ITA" value = "Italy"/>
    </appSettings>

所以,在添加之后我想获得新值及其键,但是我看不到可能发生的事情。我能得到的是 AllKeys ,一切都还可以,但是我想要添加新密钥的值。

我在Notepad ++中打开了我的文件,我可以看到它已正确更新,但我不知道如何获取新密钥的值。

编辑:好的,我会再次尝试解释一下,这次我真的希望有人能理解我。

使用 ConfigurationManager.OpenExeConfiguration(path_to_the_file)我正在加载应用程序的配置文件。该方法的返回类型为:配置 其中一个属性是 AllKeys ,当我调用它时,它会返回我所需要的 - 所有更新的密钥,但是我不知道如何获取值那些密钥。我想知道配置对象的方法或属性是否 ConfigurationManager.OpenExeConfiguration(path_to_the_file)方法返回。

这就是我要问的一切。

3 个答案:

答案 0 :(得分:2)

在向app.config

添加新值后尝试此操作
ConfigurationManager.RefreshSection(“appSettings”);

有关详细信息,请参阅文章:http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.refreshsection.aspx

AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
string ITAValue =  appSettings.Settings[“ITA”].Value;

答案 1 :(得分:1)

试试这个:

Private Sub readsettings()
    Dim mySettings As NameValueCollection = ConfigurationManager.GetSection("ConnectionStrings")
    Dim i As Integer = 0
    While i < mySettings.Count
        Console.WriteLine("#{0} Key: {1} Value: {2}", i, mySettings.GetKey(i), mySettings(i))
        System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
    End While
End Sub

答案 2 :(得分:0)

 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath

查看您是否正在加载当前文件。否则明智。使用自定义文件位置。

 ConfigurationManager.OpenExeConfiguration("myfilepath.exe");

如果您要动态添加删除或更改appsettings。那么我建议你使用File部分的appSettings属性。