我正在使用 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)方法返回。
这就是我要问的一切。
答案 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属性。