public override void WriteData(Configuration config, XmlWriter writer, ConfigurationSaveMode mode)
{
string xml;
ConfigurationSection section = config.GetSectionInstance(this, false);
if (section != null)
{
ConfigurationSection parentSection = config.Parent != null?config.Parent.GetSectionInstance(this, false) : null;
xml = section.SerializeSection(parentSection, Name, mode);
string externalDataXml = section.ExternalDataXml;
string filePath = config.FilePath;
if (!String.IsNullOrEmpty(filePath) && !String.IsNullOrEmpty(externalDataXml))
{
string path = Path.Combine(Path.GetDirectoryName(filePath), section.SectionInformation.ConfigSource);
using (StreamWriter sw = new StreamWriter(path))
{
sw.Write(externalDataXml);
}
}
if (section.SectionInformation.IsProtected)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<{0} configProtectionProvider=\"{1}\">\n",
Name,
section.SectionInformation.ProtectionProvider.Name);
sb.Append(config.ConfigHost.EncryptSection(xml,
section.SectionInformation.ProtectionProvider,
ProtectedConfiguration.Section));
sb.AppendFormat("</{0}>", Name);
xml = sb.ToString();
}
}
else
{
xml = config.GetSectionXml(this);
}
if (xml != null)
{
writer.WriteRaw(xml);
/* XmlTextReader tr = new XmlTextReader (new StringReader (xml));
* writer.WriteNode (tr, true);
* tr.Close ();*/
}
}