ConfigurationManager 클래스

정의

클라이언트 애플리케이션의 구성 파일에 액세스할 수 있도록 합니다. 이 클래스는 상속될 수 없습니다.

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
상속
ConfigurationManager

예제

첫 번째 예제를 읽고 애플리케이션 설정 하 고, 새 설정을 추가 하 고, 기존 설정을 업데이트 하는 간단한 콘솔 애플리케이션을 보여 줍니다.

using System;  
using System.Configuration;  

namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadAllSettings();  
            ReadSetting("Setting1");  
            ReadSetting("NotValid");  
            AddUpdateAppSettings("NewSetting", "May 7, 2014");  
            AddUpdateAppSettings("Setting1", "May 8, 2014");  
            ReadAllSettings();  
        }  

        static void ReadAllSettings()  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  

                if (appSettings.Count == 0)  
                {  
                    Console.WriteLine("AppSettings is empty.");  
                }  
                else  
                {  
                    foreach (var key in appSettings.AllKeys)  
                    {  
                        Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);  
                    }  
                }  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  

        static void ReadSetting(string key)  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  
                string result = appSettings[key] ?? "Not Found";  
                Console.WriteLine(result);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  

        static void AddUpdateAppSettings(string key, string value)  
        {  
            try  
            {  
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
                var settings = configFile.AppSettings.Settings;  
                if (settings[key] == null)  
                {  
                    settings.Add(key, value);  
                }  
                else  
                {  
                    settings[key].Value = value;  
                }  
                configFile.Save(ConfigurationSaveMode.Modified);  
                ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error writing app settings");  
            }  
        }  
    }  
}  
Imports System.Configuration  
Module Module1  

    Sub Main()  
        ReadAllSettings()  
        ReadSetting("Setting1")  
        ReadSetting("NotValid")  
        AddUpdateAppSettings("NewSetting", "May 7, 2014")  
        AddUpdateAppSettings("Setting1", "May 8, 2014")  
        ReadAllSettings()  
    End Sub  

    Sub ReadAllSettings()  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  

            If appSettings.Count = 0 Then  
                Console.WriteLine("AppSettings is empty.")  
            Else  
                For Each key As String In appSettings.AllKeys  
                    Console.WriteLine("Key: {0} Value: {1}", key, appSettings(key))  
                Next  
            End If  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  

    Sub ReadSetting(key As String)  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  
            Dim result As String = appSettings(key)  
            If IsNothing(result) Then  
                result = "Not found"  
            End If  
            Console.WriteLine(result)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  

    Sub AddUpdateAppSettings(key As String, value As String)  
        Try  
            Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)  
            Dim settings = configFile.AppSettings.Settings  
            If IsNothing(settings(key)) Then  
                settings.Add(key, value)  
            Else  
                settings(key).Value = value  
            End If  
            configFile.Save(ConfigurationSaveMode.Modified)  
            ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error writing app settings")  
        End Try  
    End Sub  

End Module  

이전 예제에서는 프로젝트에 아래와 같이 App.config 파일이 있다고 가정합니다.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
  <appSettings>  
    <add key="Setting1" value="May 5, 2014"/>  
    <add key="Setting2" value="May 6, 2014"/>  
  </appSettings>  
</configuration>  

다음 예제에서는 연결 문자열을 사용하여 데이터베이스에서 데이터를 읽는 방법을 보여줍니다.

using System;  
using System.Configuration;  
using System.Data.SqlClient;  

namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadProducts();  
        }  

        static void ReadProducts()  
        {  
            var connectionString = ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString;  
            string queryString = "SELECT Id, ProductName FROM dbo.Products;";  
            using (var connection = new SqlConnection(connectionString))  
            {  
                var command = new SqlCommand(queryString, connection);  
                connection.Open();  
                using (var reader = command.ExecuteReader())  
                {  
                    while (reader.Read())  
                    {  
                        Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));  
                    }  
                }  
            }  
        }  
    }  
}  
Imports System.Configuration  
Imports System.Data.SqlClient  
Module Module1  

    Sub Main()  
        ReadProducts()  
    End Sub  

    Sub ReadProducts()  
        Dim connectionString = ConfigurationManager.ConnectionStrings("WingtipToys").ConnectionString  
        Dim queryString = "SELECT Id, ProductName FROM dbo.Products;"  
        Using connection As New SqlConnection(connectionString)  
            Dim command = New SqlCommand(queryString, connection)  
            connection.Open()  

            Using reader As SqlDataReader = command.ExecuteReader()  
                While reader.Read()  
                    Console.WriteLine(String.Format("{0}, {1}", reader(0), reader(1)))  
                End While  
            End Using  
        End Using  
    End Sub  

End Module  

이전 예제에서는 아래와 같이 프로젝트에 App.config 있다고 가정합니다.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
    <connectionStrings>  
      <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" />  
    </connectionStrings>  
</configuration>  

설명

ConfigurationManager 클래스를 사용 하면 액세스 컴퓨터, 애플리케이션 및 사용자 구성 정보입니다. 이 클래스는 ConfigurationSettings 사용되지 않는 클래스를 대체합니다. 웹 애플리케이션을 WebConfigurationManager 클래스입니다.

클래스를 ConfigurationManager 사용하려면 프로젝트에서 어셈블리를 System.Configuration 참조해야 합니다. 기본적으로 콘솔 애플리케이션 같은 일부 프로젝트 템플릿에서 참조 하지 않습니다이 어셈블리 하므로 직접 참조 해야 합니다.

참고

이름 및 애플리케이션 구성 파일의 위치를 애플리케이션의 호스트에 따라 달라 집니다. 자세한 내용은 구성 파일을 사용하여 앱 구성을 참조하세요.

기본 제공 System.Configuration 형식을 사용하거나 해당 형식에서 파생하여 구성 정보를 처리할 수 있습니다. 이러한 형식을 사용하면 구성 정보를 직접 작업할 수 있으며 사용자 지정 정보를 포함하도록 구성 파일을 확장할 수 있습니다.

클래스에는 ConfigurationManager 다음 작업을 수행할 수 있는 멤버가 포함됩니다.

  • 구성 파일에서 섹션을 읽습니다. 구성 정보에 액세스하려면 메서드를 호출합니다 GetSection . 및 과 connectionStrings같은 appSettings 일부 섹션의 경우 및 ConnectionStrings 클래스를 AppSettings 사용합니다. 이러한 멤버는 읽기 전용 작업을 수행하고, 단일 캐시된 구성 인스턴스를 사용하며, 다중 스레드를 인식합니다.

  • 구성 파일을 전체적으로 읽고 씁니다. 애플리케이션 읽고 로컬 또는 원격으로 모든 수준에서 또는 다른 애플리케이션이 나 컴퓨터 자체에 대 한 구성 설정을 쓸 수 있습니다. 클래스에서 제공하는 ConfigurationManager 메서드 중 하나를 사용하여 SampleApp.exe.config 같은 구성 파일을 엽니다. 이러한 메서드는 Configuration 연결된 구성 파일을 사용하는 데 사용할 수 있는 메서드와 속성을 차례로 노출하는 개체를 반환합니다. 메서드는 읽기 또는 쓰기 작업을 수행하고 파일을 쓸 때마다 구성 데이터를 만듭니다.

  • 구성 작업을 지원합니다. 다음 형식은 다양한 구성 작업을 지원하는 데 사용됩니다.

    기존 구성 정보를 사용하는 것 외에도 , ConfigurationElementCollectionConfigurationPropertyConfigurationSection , 및 클래스와 같은 ConfigurationElement기본 제공 구성 형식을 확장하여 사용자 지정 구성 요소를 만들고 작업할 수 있습니다. 프로그래밍 방식으로 기본 제공 구성 형식을 확장하는 방법의 예는 를 참조하세요 ConfigurationSection. 특성 기반 모델을 사용하는 기본 제공 구성 형식을 확장하는 방법의 예는 를 참조하세요 ConfigurationElement.

상속자 참고

클래스를 Configuration 사용하면 구성 파일을 편집하는 프로그래밍 방식으로 액세스할 수 있습니다. 중 하나를 사용 합니다 Open 제공한 메서드 ConfigurationManager합니다. 이러한 메서드는 개체를 Configuration 반환하며, 이 개체는 기본 구성 파일을 처리하는 데 필요한 메서드와 속성을 제공합니다. 읽기 또는 쓰기를 위해 이러한 파일에 액세스할 수 있습니다.

구성 파일을 읽으려면 또는 GetSectionGroup(String)를 사용합니다GetSection(String). 읽는 사용자 또는 프로세스에는 다음 권한이 있어야 합니다.

  • 현재 구성 계층 수준에서 구성 파일에 대한 읽기 권한입니다.

  • 모든 부모 구성 파일에 대한 읽기 권한입니다.

애플리케이션에서 자체 구성에 대 한 읽기 전용 액세스에 필요한 경우 사용 하는 것이 좋습니다는 GetSection(String) 메서드. 이 메서드에 액세스할 수 있는 보다 더 나은 성능을 현재 애플리케이션에 대 한 캐시 된 구성 값에는 Configuration 클래스.

구성 파일에 쓰려면 메서드 중 Save 하나를 사용합니다. 작성하는 사용자 또는 프로세스에는 다음 권한이 있어야 합니다.

  • 현재 구성 계층 수준에서 구성 파일 및 디렉터리에 대한 쓰기 권한입니다.

  • 모든 구성 파일에 대한 읽기 권한입니다.

속성

AppSettings

현재 애플리케이션의 기본 구성에 대한 AppSettingsSection 데이터를 가져옵니다.

ConnectionStrings

현재 애플리케이션의 기본 구성에 대한 ConnectionStringsSection 데이터를 가져옵니다.

메서드

GetSection(String)

현재 애플리케이션의 기본 구성에 대한 지정된 구성 섹션을 검색합니다.

OpenExeConfiguration(ConfigurationUserLevel)

현재 애플리케이션의 구성 파일을 Configuration 개체로 엽니다.

OpenExeConfiguration(String)

지정된 클라이언트 구성 파일을 Configuration 개체로 엽니다.

OpenMachineConfiguration()

현재 컨퓨터의 컴퓨터 구성 파일을 Configuration 개체로 엽니다.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

지정된 파일 매핑 및 사용자 수준을 사용하여 지정된 클라이언트 구성 파일을 Configuration 개체로 엽니다.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

지정된 파일 매핑, 사용자 수준 및 미리 로드 옵션을 사용하여 지정된 클라이언트 구성 파일을 Configuration 개체로 엽니다.

OpenMappedMachineConfiguration(ConfigurationFileMap)

컴퓨터 구성 파일을 지정된 파일 매핑을 사용하는 Configuration 개체로 엽니다.

RefreshSection(String)

명명된 섹션을 새로 고쳐서 다음에 검색할 때 디스크에서 다시 읽도록 합니다.

적용 대상

추가 정보