이 설명서는 보관되지만 유지 되지 않습니다.

ConfigurationSection 클래스

업데이트: 2007년 11월

구성 파일에 있는 섹션을 나타냅니다.

네임스페이스:  System.Configuration
어셈블리:  System.Configuration(System.Configuration.dll)

public abstract class ConfigurationSection : ConfigurationElement
public abstract class ConfigurationSection extends ConfigurationElement
public abstract class ConfigurationSection extends ConfigurationElement

ConfigurationSection 클래스를 사용하여 사용자 지정 섹션 형식을 구현할 수 있습니다. ConfigurationSection 클래스를 확장하여 사용자 지정 처리 기능을 제공하고 사용자 지정 구성 섹션에 프로그래밍 방식으로 액세스할 수 있도록 합니다.

섹션의 처리 형식은 configSections 요소에 항목으로 등록됩니다. 예제를 보려면 예제 단원에서 인용한 구성 파일을 참조하십시오.

참고:

이전 버전의 .NET Framework에서는 구성 섹션 처리기를 사용하여 구성 설정을 프로그래밍 방식으로 변경했습니다. 이제 모든 기본 구성 섹션은 ConfigurationSection 클래스를 확장하는 클래스에서 나타냅니다.

구현자 참고 사항:

프로그래밍 코딩 모델이나 선언적(특성 사용) 코딩 모델을 사용하여 사용자 지정 구성 섹션을 만들 수 있습니다.

  • 프로그래밍 모델. 이 모델에서는 각 섹션 특성에 대한 속성을 만들어 해당 값을 가져오거나 설정하고 기존 ConfigurationElement 기본 클래스의 내부 속성 모음에 추가해야 합니다.

  • 선언적 모델. 특성 사용 모델이라고도 하는 이 간단한 모델에서는 속성을 사용하여 섹션 특성을 정의하고 특성으로 데코레이팅할 수 있습니다. ASP.NET 구성 시스템에서는 이러한 특성을 통해 속성 형식과 기본값을 확인합니다. ASP.NET 구성 시스템에서는 리플렉션을 통해 가져온 이러한 정보를 사용하여 섹션 속성 개체를 만들고 필요한 초기화를 수행합니다.

Configuration 클래스를 사용하면 구성 파일을 편집하기 위해 프로그래밍 방식으로 액세스할 수 있습니다. 다음과 같이 읽거나 쓰기 위해 이러한 파일에 액세스할 수 있습니다.

  • 읽기. GetSection 또는 GetSectionGroup을 사용하여 구성 정보를 읽습니다. 읽는 사용자나 프로세스에 다음과 같은 권한이 있어야 합니다.

    • 현재 구성 계층 구조 수준의 구성 파일에 대한 읽기 권한

    • 모든 부모 구성 파일에 대한 읽기 권한

    응용 프로그램에 자체 구성에 대한 읽기 전용 액세스 권한이 필요한 경우 웹 응용 프로그램에서는 오버로드된 GetSection() 메서드를, 클라이언트 응용 프로그램에서는 ConfigurationManager.GetSection 메서드를 사용하는 것이 좋습니다.

    이러한 메서드는 Configuration 클래스보다 성능이 좋은 현재 응용 프로그램의 캐시된 구성 값에 액세스할 수 있도록 합니다.

    참고:

    path 매개 변수를 사용하는 정적 GetSection 메서드를 사용하는 경우 path 매개 변수는 코드가 실행되고 있는 응용 프로그램을 참조해야 합니다. 그렇지 않으면, 매개 변수가 무시되고 현재 실행되는 응용 프로그램의 구성 정보가 반환됩니다.

  • 쓰기. Save 메서드 중 하나를 사용하여 구성 정보를 씁니다. 쓰는 사용자나 프로세스에는 다음과 같은 권한이 있어야 합니다.

    • 현재 구성 계층 구조 수준의 구성 파일과 디렉터리에 대한 쓰기 권한

    • 모든 구성 파일에 대한 읽기 권한

다음 예제에서는 프로그래밍 방식으로 사용자 지정 섹션을 구현하는 방법을 보여 줍니다.

특성 사용 모델을 사용하여 구현된 사용자 지정 섹션의 구현 및 사용 방법을 보여 주는 전체 예제는 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;
        }
    }


}


다음 예제는 이전 예제에 적용되는 구성 파일의 일부입니다.

<?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>

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.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.Serialization.Configuration.DataContractSerializerSection
      System.ServiceModel.Activation.Configuration.DiagnosticSection
      System.ServiceModel.Activation.Configuration.NetPipeSection
      System.ServiceModel.Activation.Configuration.NetTcpSection
      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.ServiceHostingEnvironmentSection
      System.ServiceModel.Configuration.ServicesSection
      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.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.ProcessModelSection
      System.Web.Configuration.ProfileSection
      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.Xml.Serialization.Configuration.DateTimeSerializationSection
      System.Xml.Serialization.Configuration.SchemaImporterExtensionsSection
      System.Xml.Serialization.Configuration.XmlSerializerSection

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0에서 지원
표시: