1

我正在使用ConfigurationManager.OpenExeConfiguration方法尝试从 appSettings 动态获取密钥。我动态更新了文件,所以在更新后我试图打开它并获取新密钥的新值。

示例:在开始时,我的文件如下所示:

<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)方法是否返回配置对象的方法或属性。

这就是我要问的。

4

3 回答 3

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;
于 2013-06-24T13:56:37.550 回答
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
于 2015-09-07T11:15:38.150 回答
0
 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath

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

 ConfigurationManager.OpenExeConfiguration("myfilepath.exe");

如果您要即时添加删除或更改应用程序设置。那么我建议你在appSettings部分使用File属性。

于 2013-06-24T13:15:00.690 回答