internal void DeserializeConfigSource(string basePath) { var configSource = SectionInformation.ConfigSource; if (string.IsNullOrEmpty(configSource)) { return; } if (Path.IsPathRooted(configSource)) { throw new ConfigurationErrorsException("The configSource attribute must be a relative physical path."); } if (HasLocalModifications()) { throw new ConfigurationErrorsException( "A section using 'configSource' may contain no other attributes or elements."); } string path = Path.Combine(basePath, configSource); if (!File.Exists(path)) { RawXml = null; SectionInformation.SetRawXml(null); throw new ConfigurationErrorsException(string.Format("Unable to open configSource file '{0}'.", path)); } RawXml = File.ReadAllText(path); SectionInformation.SetRawXml(RawXml); DeserializeElement(XmlReader.Create(new StringReader(RawXml)), false); }
private void DoDeserializeSection(XmlReader reader) { reader.MoveToContent(); string configSource = null; while (reader.MoveToNextAttribute()) { var localName = reader.LocalName; if (localName == "configSource") { configSource = reader.Value; } } if (configSource != null) { SectionInformation.ConfigSource = configSource; } SectionInformation.SetRawXml(RawXml); if (SectionHandler == null) { DeserializeElement(reader, false); } }
void DoDeserializeSection(XmlReader reader) { reader.MoveToContent(); string protection_provider = null; string config_source = null; string localName; while (reader.MoveToNextAttribute()) { localName = reader.LocalName; if (localName == "configProtectionProvider") { protection_provider = reader.Value; } else if (localName == "configSource") { config_source = reader.Value; } } /* XXX this stuff shouldn't be here */ { if (protection_provider != null) { ProtectedConfigurationProvider prov = ProtectedConfiguration.GetProvider(protection_provider, true); XmlDocument doc = new ConfigurationXmlDocument(); reader.MoveToElement(); doc.Load(new StringReader(reader.ReadInnerXml())); XmlNode n = prov.Decrypt(doc); reader = new XmlNodeReader(n); SectionInformation.ProtectSection(protection_provider); reader.MoveToContent(); } } if (config_source != null) { SectionInformation.ConfigSource = config_source; } SectionInformation.SetRawXml(RawXml); if (SectionHandler == null) { DeserializeElement(reader, false); } }
protected internal virtual object GetRuntimeObject() { if (SectionHandler != null) { ConfigurationSection parentSection = sectionInformation != null?sectionInformation.GetParentSection() : null; object parent = parentSection != null?parentSection.GetRuntimeObject() : null; if (RawXml == null) { return(parent); } try { // This code requires some re-thinking... XmlReader reader = new ConfigXmlTextReader( new StringReader(RawXml), Configuration.FilePath); DoDeserializeSection(reader); if (!String.IsNullOrEmpty(SectionInformation.ConfigSource)) { string fileDir = SectionInformation.ConfigFilePath; if (!String.IsNullOrEmpty(fileDir)) { fileDir = Path.GetDirectoryName(fileDir); } else { fileDir = String.Empty; } string path = Path.Combine(fileDir, SectionInformation.ConfigSource); if (File.Exists(path)) { RawXml = File.ReadAllText(path); SectionInformation.SetRawXml(RawXml); } } } catch { // ignore, it can fail - we deserialize only in order to get // the configSource attribute } XmlDocument doc = new ConfigurationXmlDocument(); doc.LoadXml(RawXml); return(SectionHandler.Create(parent, ConfigContext, doc.DocumentElement)); } return(this); }
internal void DeserializeConfigSource(string basePath) { string config_source = SectionInformation.ConfigSource; if (String.IsNullOrEmpty (config_source)) return; if (Path.IsPathRooted (config_source)) throw new ConfigurationException ("The configSource attribute must be a relative physical path."); if (HasLocalModifications ()) throw new ConfigurationException ("A section using 'configSource' may contain no other attributes or elements."); string path = Path.Combine (basePath, config_source); if (!File.Exists (path)) { RawXml = null; SectionInformation.SetRawXml (null); return; } RawXml = File.ReadAllText (path); SectionInformation.SetRawXml (RawXml); DeserializeElement (new ConfigXmlTextReader (new StringReader (RawXml), path), false); }