This topic has not yet been rated - Rate this topic

ConfigurationSection Class

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

Represents a section within a configuration file.

System.Object
  System.Configuration.ConfigurationElement
    System.Configuration.ConfigurationSection
      More...

Namespace:  System.Configuration
Assembly:  System.Configuration (in System.Configuration.dll)
public abstract class ConfigurationSection : ConfigurationElement

The ConfigurationSection type exposes the following members.

  Name Description
Protected method ConfigurationSection Initializes a new instance of the ConfigurationSection class.
Top
  Name Description
Public property CurrentConfiguration Gets a reference to the top-level Configuration instance that represents the configuration hierarchy that the current ConfigurationElement instance belongs to. (Inherited from ConfigurationElement.)
Public property ElementInformation Gets an ElementInformation object that contains the non-customizable information and functionality of the ConfigurationElement object. (Inherited from ConfigurationElement.)
Protected property ElementProperty Gets the ConfigurationElementProperty object that represents the ConfigurationElement object itself. (Inherited from ConfigurationElement.)
Protected property EvaluationContext Gets the ContextInformation object for the ConfigurationElement object. (Inherited from ConfigurationElement.)
Protected property HasContext Gets a value that indicates whether the CurrentConfiguration property is null. (Inherited from ConfigurationElement.)
Protected property Item[ConfigurationProperty] Gets or sets a property or attribute of this configuration element. (Inherited from ConfigurationElement.)
Protected property Item[String] Gets or sets a property, attribute, or child element of this configuration element. (Inherited from ConfigurationElement.)
Public property LockAllAttributesExcept Gets the collection of locked attributes. (Inherited from ConfigurationElement.)
Public property LockAllElementsExcept Gets the collection of locked elements. (Inherited from ConfigurationElement.)
Public property LockAttributes Gets the collection of locked attributes (Inherited from ConfigurationElement.)
Public property LockElements Gets the collection of locked elements. (Inherited from ConfigurationElement.)
Public property LockItem Gets or sets a value indicating whether the element is locked. (Inherited from ConfigurationElement.)
Protected property Properties Gets the collection of properties. (Inherited from ConfigurationElement.)
Public property SectionInformation Gets a SectionInformation object that contains the non-customizable information and functionality of the ConfigurationSection object.
Top
  Name Description
Protected method DeserializeElement Reads XML from the configuration file. (Inherited from ConfigurationElement.)
Protected method DeserializeSection Infrastructure. Reads XML from the configuration file.
Public method Equals Compares the current ConfigurationElement instance to the specified object. (Inherited from ConfigurationElement.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Gets a unique value representing the current ConfigurationElement instance. (Inherited from ConfigurationElement.)
Protected method GetRuntimeObject Returns a custom object when overridden in a derived class.
Protected method GetTransformedAssemblyString Returns the transformed version of the specified assembly name. (Inherited from ConfigurationElement.)
Protected method GetTransformedTypeString Returns the transformed version of the specified type name. (Inherited from ConfigurationElement.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method Init Sets the ConfigurationElement object to its initial state. (Inherited from ConfigurationElement.)
Protected method InitializeDefault Used to initialize a default set of values for the ConfigurationElement object. (Inherited from ConfigurationElement.)
Protected method IsModified Indicates whether this configuration element has been modified since it was last saved or loaded when implemented in a derived class. (Overrides ConfigurationElement.IsModified().)
Public method IsReadOnly Gets a value indicating whether the ConfigurationElement object is read-only. (Inherited from ConfigurationElement.)
Protected method ListErrors Adds the invalid-property errors in this ConfigurationElement object, and in all subelements, to the passed list. (Inherited from ConfigurationElement.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method OnDeserializeUnrecognizedAttribute Gets a value indicating whether an unknown attribute is encountered during deserialization. (Inherited from ConfigurationElement.)
Protected method OnDeserializeUnrecognizedElement Gets a value indicating whether an unknown element is encountered during deserialization. (Inherited from ConfigurationElement.)
Protected method OnRequiredPropertyNotFound Throws an exception when a required property is not found. (Inherited from ConfigurationElement.)
Protected method PostDeserialize Called after deserialization. (Inherited from ConfigurationElement.)
Protected method PreSerialize Called before serialization. (Inherited from ConfigurationElement.)
Protected method Reset Resets the internal state of the ConfigurationElement object, including the locks and the properties collections. (Inherited from ConfigurationElement.)
Protected method ResetModified Resets the value of the IsModified method to false when implemented in a derived class. (Overrides ConfigurationElement.ResetModified().)
Protected method SerializeElement Writes the contents of this configuration element to the configuration file when implemented in a derived class. (Inherited from ConfigurationElement.)
Protected method SerializeSection Infrastructure. Creates an XML string containing an unmerged view of the ConfigurationSection object as a single section to write to a file.
Protected method SerializeToXmlElement Writes the outer tags of this configuration element to the configuration file when implemented in a derived class. (Inherited from ConfigurationElement.)
Protected method SetPropertyValue Sets a property to the specified value. (Inherited from ConfigurationElement.)
Protected method SetReadOnly Sets the IsReadOnly property for the ConfigurationElement object and all subelements. (Inherited from ConfigurationElement.)
Protected method ShouldSerializeElementInTargetVersion Indicates whether the specified element should be serialized when the configuration object hierarchy is serialized for the specified target version of the .NET Framework.
Protected method ShouldSerializePropertyInTargetVersion Indicates whether the specified property should be serialized when the configuration object hierarchy is serialized for the specified target version of the .NET Framework.
Protected method ShouldSerializeSectionInTargetVersion Indicates whether the current ConfigurationSection instance should be serialized when the configuration object hierarchy is serialized for the specified target version of the .NET Framework.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Protected method Unmerge Modifies the ConfigurationElement object to remove all values that should not be saved. (Inherited from ConfigurationElement.)
Top

You use the ConfigurationSection class to implement a custom section type. Extend the ConfigurationSection class to provide custom handling and programmatic access to custom configuration sections. For information about how use custom configuration sections, see How to: Create Custom Configuration Sections Using ConfigurationSection.

A section registers its handling type with an entry in the configSections element. For an example, see the configuration file excerpt shown in the Example section.

Note Note

In previous versions of the .NET Framework, configuration section handlers were used to make changes to configuration settings programmatically. Now, all the default configuration sections are represented by classes that extend the ConfigurationSection class.

Notes to Implementers

You can use a programmatic or a declarative (attributed) coding model to create custom configuration sections:

  • Programmatic model. This model requires that for each section attribute you create a property to get or set its value and add it to the internal property bag of the underlying ConfigurationElement base class.

  • Declarative model. This simpler model, also called the attributed model, allows you to define a section attribute by using a property and decorating it with attributes. These attributes instruct the ASP.NET configuration system about the property types and their default values. With this information, obtained through reflection, the ASP.NET configuration system creates the section property objects and performs the required initialization.

The Configuration class allows programmatic access for editing configuration files. You can access these files for reading or writing as follows:

  • Reading. You use GetSection or GetSectionGroup to read configuration information. Note that the user or process that reads must have the following permissions:

    • Read permission on the configuration file at the current configuration hierarchy level.

    • Read permissions on all the parent configuration files.

    If your application needs read-only access to its own configuration, it is recommended you use the GetSection() overloaded methods in the case of Web applications, or the ConfigurationManager.GetSection method in the case of client applications.

    These methods provide access to the cached configuration values for the current application, which has better performance than the Configuration class.

    Note Note

    If you use a static GetSection method that takes a path parameter, the path parameter must refer to the application in which the code is running; otherwise, the parameter is ignored and configuration information for the currently-running application is returned.

  • Writing. You use one of the Save methods to write configuration information. Note that the user or process that writes must have the following permissions:

    • Write permission on the configuration file and directory at the current configuration hierarchy level.

    • Read permissions on all the configuration files.

The following example shows how to implement a custom section programmatically.

For a complete example that shows how to implement and use a custom section implemented using the attributed model, see ConfigurationElement.


// Define a custom section.
// The CustomSection type allows to define a custom section 
// programmatically.
public sealed class CustomSection : 
    ConfigurationSection
{
    // The collection (property bag) that contains 
    // the section properties.
    private static ConfigurationPropertyCollection _Properties;

    // Internal flag to disable 
    // property setting.
    private static bool _ReadOnly;

    // The FileName property.
    private static readonly ConfigurationProperty _FileName =
        new ConfigurationProperty("fileName", 
        typeof(string),"default.txt", 
        ConfigurationPropertyOptions.IsRequired);

    // The MaxUsers property.
    private static readonly ConfigurationProperty _MaxUsers =
        new ConfigurationProperty("maxUsers", 
        typeof(long), (long)1000, 
        ConfigurationPropertyOptions.None);

    // The MaxIdleTime property.
    private static readonly ConfigurationProperty _MaxIdleTime =
        new ConfigurationProperty("maxIdleTime", 
        typeof(TimeSpan), TimeSpan.FromMinutes(5), 
        ConfigurationPropertyOptions.IsRequired);

    // CustomSection constructor.
    public CustomSection()
    {
        // Property initialization
        _Properties = 
            new ConfigurationPropertyCollection();

        _Properties.Add(_FileName);
        _Properties.Add(_MaxUsers);
        _Properties.Add(_MaxIdleTime);
   }


    // This is a key customization. 
    // It returns the initialized property bag.
    protected override ConfigurationPropertyCollection Properties
    {
        get
        {
            return _Properties;
        }
    }


    private new bool IsReadOnly
    {
        get
        {
            return _ReadOnly;
        }
    }

    // Use this to disable property setting.
    private void ThrowIfReadOnly(string propertyName)
    {
        if (IsReadOnly)
            throw new ConfigurationErrorsException(
                "The property " + propertyName + " is read only.");
    }


    // Customizes the use of CustomSection
    // by setting _ReadOnly to false.
    // Remember you must use it along with ThrowIfReadOnly.
    protected override object GetRuntimeObject()
    {
        // To enable property setting just assign true to
        // the following flag.
        _ReadOnly = true;
        return base.GetRuntimeObject();
    }


    [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
        MinLength = 1, MaxLength = 60)]
    public string FileName
    {
        get
        {
            return (string)this["fileName"];
        }
        set
        {
            // With this you disable the setting.
            // Remember that the _ReadOnly flag must
            // be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName");
            this["fileName"] = value;
        }
    }

    [LongValidator(MinValue = 1, MaxValue = 1000000,
        ExcludeRange = false)]
    public long MaxUsers
    {
        get
        {
            return (long)this["maxUsers"];
        }
        set
        {
            this["maxUsers"] = value;
        }
    }

    [TimeSpanValidator(MinValueString = "0:0:30",
        MaxValueString = "5:00:0",
        ExcludeRange = false)]
    public TimeSpan MaxIdleTime
    {
        get
        {
            return  (TimeSpan)this["maxIdleTime"];
        }
        set
        {
            this["maxIdleTime"] = value;
        }
    }


}


The following example is an excerpt of the configuration file as it applies to the previous example.

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<configSections>

<section name="CustomSection" type="Samples.AspNet. CustomSection, CustomConfigurationSection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />

</configSections>

<CustomSection fileName="default.txt" maxUsers="1000" maxIdleTime="00:15:00" />

</configuration>

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8 Consumer Preview, Windows Server 8 Beta, Windows 7, Windows Server 2008 SP2, Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
System.Object
  System.Configuration.ConfigurationElement
    System.Configuration.ConfigurationSection
      System.Configuration.AppSettingsSection
      System.Configuration.ClientSettingsSection
      System.Configuration.ConnectionStringsSection
      System.Configuration.DefaultSection
      System.Configuration.IgnoreSection
      System.Configuration.ProtectedConfigurationSection
      System.Configuration.UriSection
      System.IdentityModel.Configuration.SystemIdentityModelSection
      System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection
      System.Net.Configuration.AuthenticationModulesSection
      System.Net.Configuration.ConnectionManagementSection
      System.Net.Configuration.DefaultProxySection
      System.Net.Configuration.RequestCachingSection
      System.Net.Configuration.SettingsSection
      System.Net.Configuration.SmtpSection
      System.Net.Configuration.WebRequestModulesSection
      System.Runtime.Caching.Configuration.MemoryCacheSection
      System.Runtime.Serialization.Configuration.DataContractSerializerSection
      System.Runtime.Serialization.Configuration.NetDataContractSerializerSection
      System.ServiceModel.Activation.Configuration.DiagnosticSection
      System.ServiceModel.Activation.Configuration.NetPipeSection
      System.ServiceModel.Activation.Configuration.NetTcpSection
      System.ServiceModel.Activities.Tracking.Configuration.TrackingSection
      System.ServiceModel.Configuration.BehaviorsSection
      System.ServiceModel.Configuration.BindingsSection
      System.ServiceModel.Configuration.ClientSection
      System.ServiceModel.Configuration.ComContractsSection
      System.ServiceModel.Configuration.CommonBehaviorsSection
      System.ServiceModel.Configuration.DiagnosticSection
      System.ServiceModel.Configuration.ExtensionsSection
      System.ServiceModel.Configuration.ProtocolMappingSection
      System.ServiceModel.Configuration.ServiceHostingEnvironmentSection
      System.ServiceModel.Configuration.ServicesSection
      System.ServiceModel.Configuration.StandardEndpointsSection
      System.ServiceModel.Routing.Configuration.RoutingSection
      System.Transactions.Configuration.DefaultSettingsSection
      System.Transactions.Configuration.MachineSettingsSection
      System.Web.Configuration.AnonymousIdentificationSection
      System.Web.Configuration.AuthenticationSection
      System.Web.Configuration.AuthorizationSection
      System.Web.Configuration.CacheSection
      System.Web.Configuration.ClientTargetSection
      System.Web.Configuration.CompilationSection
      System.Web.Configuration.CustomErrorsSection
      System.Web.Configuration.DeploymentSection
      System.Web.Configuration.FullTrustAssembliesSection
      System.Web.Configuration.GlobalizationSection
      System.Web.Configuration.HealthMonitoringSection
      System.Web.Configuration.HostingEnvironmentSection
      System.Web.Configuration.HttpCookiesSection
      System.Web.Configuration.HttpHandlersSection
      System.Web.Configuration.HttpModulesSection
      System.Web.Configuration.HttpRuntimeSection
      System.Web.Configuration.IdentitySection
      System.Web.Configuration.MachineKeySection
      System.Web.Configuration.MembershipSection
      System.Web.Configuration.OutputCacheSection
      System.Web.Configuration.OutputCacheSettingsSection
      System.Web.Configuration.PagesSection
      System.Web.Configuration.PartialTrustVisibleAssembliesSection
      System.Web.Configuration.ProcessModelSection
      System.Web.Configuration.ProfileSection
      System.Web.Configuration.ProtocolsSection
      System.Web.Configuration.RoleManagerSection
      System.Web.Configuration.ScriptingAuthenticationServiceSection
      System.Web.Configuration.ScriptingJsonSerializationSection
      System.Web.Configuration.ScriptingProfileServiceSection
      System.Web.Configuration.ScriptingRoleServiceSection
      System.Web.Configuration.ScriptingScriptResourceHandlerSection
      System.Web.Configuration.SecurityPolicySection
      System.Web.Configuration.SessionPageStateSection
      System.Web.Configuration.SessionStateSection
      System.Web.Configuration.SiteMapSection
      System.Web.Configuration.SqlCacheDependencySection
      System.Web.Configuration.TraceSection
      System.Web.Configuration.TrustSection
      System.Web.Configuration.UrlMappingsSection
      System.Web.Configuration.WebControlsSection
      System.Web.Configuration.WebPartsSection
      System.Web.Configuration.XhtmlConformanceSection
      System.Web.Mobile.DeviceFiltersSection
      System.Web.Services.Configuration.WebServicesSection
      System.Web.UI.MobileControls.MobileControlsSection
      System.Windows.Forms.WindowsFormsSection
      System.Workflow.Activities.Configuration.ActiveDirectoryRoleFactoryConfiguration
      System.Workflow.Activities.ExternalDataExchangeServiceSection
      System.Workflow.Runtime.Configuration.WorkflowRuntimeSection
      System.Xaml.Hosting.Configuration.XamlHostingSection
      System.Xml.Serialization.Configuration.DateTimeSerializationSection
      System.Xml.Serialization.Configuration.SchemaImporterExtensionsSection
      System.Xml.Serialization.Configuration.XmlSerializerSection
Did you find this helpful?
(1500 characters remaining)