次の方法で共有


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 置き換えます。 Web アプリケーションの場合は、 クラスを使用します WebConfigurationManager

クラスを ConfigurationManager 使用するには、プロジェクトでアセンブリを参照する System.Configuration 必要があります。 既定では、コンソール アプリケーションなどの一部のプロジェクト テンプレートは、このアセンブリを参照しないため、手動で参照する必要があります。

注意

アプリケーション構成ファイルの名前と場所は、アプリケーションのホストによって異なります。 詳細については、「 構成ファイルを使用したアプリの構成」を参照してください。

組み込みの System.Configuration 型を使用するか、そこから派生して構成情報を処理できます。 これらの種類を使用すると、構成情報を直接操作でき、構成ファイルを拡張してカスタム情報を含めることができます。

クラスには ConfigurationManager 、次のタスクを実行できるメンバーが含まれています。

  • 構成ファイルからセクションを読み取ります。 構成情報にアクセスするには、 メソッドを呼び出します GetSection 。 や などのappSettings一部のセクションでは、 クラスと ConnectionStrings クラスを使用しますAppSettingsconnectionStrings これらのメンバーは、読み取り専用操作を実行し、構成の単一のキャッシュされたインスタンスを使用し、マルチスレッド対応です。

  • 構成ファイル全体の読み取りと書き込み。 アプリケーションは、任意のレベルで構成設定を読み取りおよび書き込みできます。それ自体、または他のアプリケーションやコンピューターの場合は、ローカルまたはリモートで行うことができます。 クラスによって提供されるメソッドのいずれかを使用して、 ConfigurationManager SampleApp.exe.config などの構成ファイルを開きます。これらのメソッドは、関連する構成ファイルの操作に使用できるメソッドとプロパティを公開するオブジェクトを返 Configuration します。 メソッドは、読み取りまたは書き込み操作を実行し、ファイルが書き込まれるたびに構成データを作成します。

  • 構成タスクをサポートします。 次の種類は、さまざまな構成タスクをサポートするために使用されます。

    既存の構成情報を操作するだけでなく、 クラスなどの組み込みの構成の種類を拡張することで、カスタム構成要素をConfigurationElementConfigurationElementCollectionConfigurationProperty作成してConfigurationSection操作できます。 組み込みの構成の種類をプログラムで拡張する方法の例については、「」を参照してください ConfigurationSection。 属性ベースのモデルを使用する組み込み構成の種類を拡張する方法の例については、「」を参照してください ConfigurationElement

注意 (継承者)

クラスを Configuration 使用すると、構成ファイルを編集するためのプログラムによるアクセスが可能になります。 によってConfigurationManager提供されるOpenメソッドのいずれかを使用します。 これらのメソッドは オブジェクトを Configuration 返します。これにより、基になる構成ファイルを処理するために必要なメソッドとプロパティが提供されます。 これらのファイルにアクセスして、読み取りまたは書き込みを行うことができます。

構成ファイルを読み取る場合は、 または を使用 GetSection(String) します GetSectionGroup(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)

名前付きセクションを次回取得するときに、ディスクから再読み取りするように、名前付きセクションを更新します。

適用対象

こちらもご覧ください