ConfigurationProperty недоступен из-за уровня защиты
Я хочу прочитать / написать (и сохранить) файл конфигурации приложения в программе
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.
Я долго гуглял, я обнаружил, что должен использовать AppSettings, но я использую пользовательский раздел.
Кто-нибудь может объяснить, почему произошла ошибка "ConfigurationProperty недоступен"? Спасибо
Редактировать:
Я установил копию локальной системы и System.Configuration на true
3 ответа
Вы можете использовать эту статью.
Редактировать:
Вы можете использовать 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();
Также Вы можете использовать эту статью.
string key_value = refconfig.AppSettings.Settings["key_name"].Value;
Я не уверен, что это будет работать для того, что вы пытаетесь сделать, но вы пытались использовать ConfigurationUserLevel.None вместо этого?