我想在程序中读/写(并保存)应用程序的配置文件
app.config是这样的:
<configuration>
<configSections>
<section name="AdWordsApi" type="System.Configuration.DictionarySectionHandler" requirePermission="false"/>
</configSections>
<AdWordsApi>
<add key="LogPath" value=".\Logs\"/>
...
</AdWordsApi>
</configuration>
当我使用 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无法访问”的错误?感谢
修改
我已将系统和 System.Configuration 的复制本地设置为 true
答案 0 :(得分:15)
string key_value = refconfig.AppSettings.Settings["key_name"].Value;
答案 1 :(得分:12)
您可以使用this article。
编辑:
你可以使用config:
<configSections>
<section name="AdWordsApi.appSettings" type="System.Configuration.AppSettingsSection" />
</configSections>
<AdWordsApi.appSettings>
<add key="LogPath" value=".\Logs\"/>
</AdWordsApi.appSettings>
此代码:
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();
您也可以使用this article。
答案 2 :(得分:1)
我不确定它是否适用于您尝试执行的操作,但您是否尝试过使用ConfigurationUserLevel.None?