如何使用自定义配置部分保存配置文件?

时间:2015-08-05 17:53:05

标签: c# .net configurationmanager

我有一个应用程序,在运行时需要在其app / web.config中插入自定义部分。通常情况下,这可以通过以下方式实现:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var mySection = new MyCustomSection { SomeProperty="foo" };

config.Sections.Add("mySection", mySection);
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);

我遇到的问题是我要添加到配置文件的部分需要它自己的序列化处理程序。我知道通过简单地创建IConfigurationSectionHandler的实现来读取配置时可以轻松处理,但我似乎无法找到实际配置部分本身的方法

查看MSDN文档,ConfigurationSection类确实有Seri​​alizeSection / DeserializeSection方法,但它们被标记为内部,无法覆盖。我还在SectionInformation中找到了一个GetRawXml / SetRawXml方法,但它们被标记为不应由用户代码直接调用的基础结构级调用。

我正在尝试做甚么可能吗?这似乎是一个非常简单的用例。

感谢。

1 个答案:

答案 0 :(得分:0)

以下是保存System.Configuration.Configuration课程的方法。

System.Configuration.Configuration configRoot = null;
if(HttpContext.Current!=null)
    configRoot = WebConfigurationManager.OpenWebConfiguration(_urlRoot);
else
   configRoot = ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal);

ConfigurationSectionGroup configGroup = configRoot.GetSectionGroup("mySections");
foreach (ConfigurationSection configSection in configGroup.Sections)
{
    //Do some updating that needs to be saved.
}
configRoot.Save();