由于其保护级别,ConfigurationProperty无法访问

我想在程序中读/写(并保存)应用程序的配置文件

app.config是这样的:

  
...

当我使用ConfigurationManager.GetSection读取app.config时,它可以工作:

 var adwords_section = (System.Collections.Hashtable) System.Configuration.ConfigurationManager.GetSection("AdWordsApi"); Console.WriteLine((string)adwords_section["LogPath"]); 

但是当我使用ConfigurationManager.OpenExeConfiguration时

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); ConfigurationSection section = config.GetSection("AdWordsApi"); Console.WriteLine(section["LogPath"]); 

我总是得到这个错误:

由于其保护级别,’System.Configuration.ConfigurationElement.this [System.Configuration.ConfigurationProperty]’无法访问

但据我所知, GetSection无法在程序运行时保存配置,就像我在开头说的那样:我想在程序运行时保存配置,所以我必须使用OpenExeConfiguration

我已经google了很长时间,我发现使用AppSettings,但我使用的是自定义部分..

任何人都可以解释为什么会出现“ConfigurationProperty无法访问”错误? 谢谢

编辑:

我已将SystemSystem.Configuration的 copy local设置为true

你可以使用这篇文章 。

编辑:

你可以使用配置:

   

这段代码:

  var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); var settings = config.GetSection("AdWordsApi.appSettings") as AppSettingsSection; if (settings != null) Console.Write(settings.Settings["LogPath"].Value); Console.ReadLine(); 

您也可以使用这篇文章 。

 string key_value = refconfig.AppSettings.Settings["key_name"].Value; 

我不确定它是否适用于您尝试的操作,但您是否尝试过使用ConfigurationUserLevel.None?