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 is inaccessible"? Спасибо

Edit:

Я установил copy local из System и System.Configuration в true

10
задан Mark Ma 21 December 2011 в 09:30
поделиться