Моя проблема заключается в следующем: в моей программе есть app.setting с разделом config, который необходим для используемой extern .dll. Он работает нормально, но я хочу иметь возможность записывать в них раздел и данные во время выполнения, но я не могу найти способ сделать это.
Мой app.config выглядит так:
<configuration>
<configSections>
<section name="DirectoryServerConfiguration" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<!--<DirectoryServerConfiguration configSource="SubConfigFiles\YPAdress.config"/>-->
</configuration>
(я прокомментировал файл с определением, потому что хочу сделать это в своем коде)
и данные, которые я хочу добавить в DirectoryServerConfiguration, следующие:
<DirectoryServerConfiguration>
<add key="YPSAddress" value="my https IP" />
</DirectoryServerConfiguration>
Я пробовал много вещей, начиная с попытки добавить ключ / значение из GetSection (до того, как понял, что это только для чтения). Чтобы создать собственный класс, производный от ConfigurationSection.
public class DirectoryServerConfiguration : ConfigurationSection
{
public DirectoryServerConfiguration()
{
}
[ConfigurationProperty("Key")]
public string Key
{
get { return (string)this["Key"]; }
set { this["Key"] = value; }
}
[ConfigurationProperty("Value")]
public string Value
{
get { return (string)this["Value"]; }
set { this["Value"] = value; }
}
}
, и добавить его:
DirectoryServerConfiguration configData = new DirectoryServerConfiguration();
configData.Key = "YPSAddress";
configData.Value = "My Https Ip";
Configuration configsect = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// You need to remove the old settings object before you can replace it
configsect.Sections.Remove("DirectoryServerConfiguration");
// with an updated one
configsect.Sections.Add("DirectoryServerConfiguration", configData);
// Write the new configuration data to the XML file
configsect.Save();
Но я не могу заставить его работать, чего я не понимаю?