Beispiel #1
0
        internal void CreateSection(SectionGroupInfo group, string name, ConfigurationSection sec)
        {
            if (group.HasChild(name))
            {
                throw new ConfigurationErrorsException("Cannot add a ConfigurationSection. A section or section group already exists with the name '" + name + "'");
            }

            if (!HasFile && !sec.SectionInformation.AllowLocation)
            {
                throw new ConfigurationErrorsException("The configuration section <" + name + "> cannot be defined inside a <location> element.");
            }

            if (!system.Host.IsDefinitionAllowed(configPath, sec.SectionInformation.AllowDefinition, sec.SectionInformation.AllowExeDefinition))
            {
                object ctx = sec.SectionInformation.AllowExeDefinition != ConfigurationAllowExeDefinition.MachineToApplication ? (object)sec.SectionInformation.AllowExeDefinition : (object)sec.SectionInformation.AllowDefinition;
                throw new ConfigurationErrorsException("The section <" + name + "> can't be defined in this configuration file (the allowed definition context is '" + ctx + "').");
            }

            if (sec.SectionInformation.Type == null)
            {
                sec.SectionInformation.Type = system.Host.GetConfigTypeName(sec.GetType());
            }

            SectionInfo section = new SectionInfo(name, sec.SectionInformation);

            section.StreamName = streamName;
            section.ConfigHost = system.Host;
            group.AddChild(section);
            elementData [section] = sec;
            sec.Configuration     = this;
        }
Beispiel #2
0
        internal void CreateSectionGroup(SectionGroupInfo parentGroup, string name, ConfigurationSectionGroup sec)
        {
            if (parentGroup.HasChild(name))
            {
                throw new ConfigurationErrorsException(
                          "Cannot add a ConfigurationSectionGroup. A section or section group already exists with the name '" +
                          name + "'");
            }
            if (sec.Type == null)
            {
                sec.Type = _system.Host.GetConfigTypeName(sec.GetType());
            }
            sec.SetName(name);

            var section = new SectionGroupInfo(name, sec.Type)
            {
                StreamName = FileName,
                ConfigHost = _system.Host
            };

            parentGroup.AddChild(section);
            _elementData[section] = sec;

            sec.Initialize(this, section);
        }
Beispiel #3
0
		internal void CreateSectionGroup (SectionGroupInfo parentGroup, string name, ConfigurationSectionGroup sec)
		{
			if (parentGroup.HasChild (name)) throw new ConfigurationErrorsException ("Cannot add a ConfigurationSectionGroup. A section or section group already exists with the name '" + name + "'");
			if (sec.Type == null) sec.Type = system.Host.GetConfigTypeName (sec.GetType ());
			sec.SetName (name);

			SectionGroupInfo section = new SectionGroupInfo (name, sec.Type);
			section.StreamName = streamName;
			section.ConfigHost = system.Host;
			parentGroup.AddChild (section);
			elementData [section] = sec;

			sec.Initialize (this, section);
		}
Beispiel #4
0
		internal void CreateSection (SectionGroupInfo group, string name, ConfigurationSection sec)
		{
			if (group.HasChild (name))
				throw new ConfigurationErrorsException ("Cannot add a ConfigurationSection. A section or section group already exists with the name '" + name + "'");
				
			if (!HasFile && !sec.SectionInformation.AllowLocation)
				throw new ConfigurationErrorsException ("The configuration section <" + name + "> cannot be defined inside a <location> element."); 

			if (!system.Host.IsDefinitionAllowed (configPath, sec.SectionInformation.AllowDefinition, sec.SectionInformation.AllowExeDefinition)) {
				object ctx = sec.SectionInformation.AllowExeDefinition != ConfigurationAllowExeDefinition.MachineToApplication ? (object) sec.SectionInformation.AllowExeDefinition : (object) sec.SectionInformation.AllowDefinition;
				throw new ConfigurationErrorsException ("The section <" + name + "> can't be defined in this configuration file (the allowed definition context is '" + ctx + "').");
			}

			if (sec.SectionInformation.Type == null)
				sec.SectionInformation.Type = system.Host.GetConfigTypeName (sec.GetType ());

			SectionInfo section = new SectionInfo (name, sec.SectionInformation);
			section.StreamName = streamName;
			section.ConfigHost = system.Host;
			group.AddChild (section);
			elementData [section] = sec;
			sec.Configuration = this;
		}