英語で読む

次の方法で共有


ConfigurationManager クラス

定義

クライアント アプリケーションの構成ファイルへのアクセスを提供します。 このクラスは継承できません。

C#
public static class ConfigurationManager
継承
ConfigurationManager

最初の例は、アプリケーション設定を読み取り、新しい設定を追加し、既存の設定を更新する単純なコンソール アプリケーションを示しています。

C#
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");
            }
        }
    }
}

次の例は、接続文字列を使用してデータベースからデータを読み取る方法を示しています。

C#
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]));
                    }
                }
            }
        }
    }
}

注釈

ConfigurationManager クラスを使用すると、コンピューター、アプリケーション、およびユーザーの構成情報にアクセスできます。 このクラスは、非推奨の ConfigurationSettings クラスを置き換えます。 Web アプリケーションの場合は、WebConfigurationManager クラスを使用します。

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

注意

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

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

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

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

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

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

    既存の構成情報を操作するだけでなく、ConfigurationElementConfigurationElementCollectionConfigurationPropertyConfigurationSection クラスなどの組み込みの構成の種類を拡張することで、カスタム構成要素を作成して操作できます。 組み込みの構成の種類をプログラムで拡張する方法の例については、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, Boolean)

指定したクライアント構成ファイルを、指定したファイル マッピング、ユーザー レベル、プリロード オプションを使用する Configuration オブジェクトとして開きます。

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

指定したクライアント構成ファイルを、指定したファイル マッピングとユーザー レベルを使用する Configuration オブジェクトとして開きます。

OpenMappedMachineConfiguration(ConfigurationFileMap)

指定したファイル マッピングを使用する Configuration オブジェクトとしてマシン構成ファイルを開きます。

RefreshSection(String)

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

適用対象

製品 バージョン
.NET 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

こちらもご覧ください