ConfigurationManager クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
クライアント アプリケーションの構成ファイルへのアクセスを提供します。 このクラスは継承できません。
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
次の例は、接続文字列を使用してデータベースからデータを読み取る方法を示しています。
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
注釈
ConfigurationManager クラスを使用すると、コンピューター、アプリケーション、およびユーザーの構成情報にアクセスできます。 このクラスは、非推奨の ConfigurationSettings クラスを置き換えます。 Web アプリケーションの場合は、WebConfigurationManager クラスを使用します。
ConfigurationManager クラスを使用するには、プロジェクトで System.Configuration
アセンブリを参照する必要があります。 既定では、コンソール アプリケーションなどの一部のプロジェクト テンプレートはこのアセンブリを参照しないため、手動で参照する必要があります。
手記
アプリケーション構成ファイルの名前と場所は、アプリケーションのホストによって異なります。 詳細については、「Configuration Filesを使用したアプリの構成」を参照してください。
組み込みの System.Configuration 型を使用するか、そこから派生して構成情報を処理できます。 これらの種類を使用すると、構成情報を直接操作でき、構成ファイルを拡張してカスタム情報を含めることができます。
ConfigurationManager クラスには、次のタスクを実行できるメンバーが含まれています。
構成ファイルからセクションを読み取ります。 構成情報にアクセスするには、GetSection メソッドを呼び出します。
appSettings
やconnectionStrings
などの一部のセクションでは、AppSettings クラスと ConnectionStrings クラスを使用します。 これらのメンバーは、読み取り専用操作を実行し、構成の単一のキャッシュされたインスタンスを使用し、マルチスレッド対応です。構成ファイル全体の読み取りと書き込み。 アプリケーションは、ローカルまたはリモートの任意のレベルで、それ自体または他のアプリケーションまたはコンピューターの構成設定の読み取りと書き込みを行うことができます。 ConfigurationManager クラスによって提供されるメソッドのいずれかを使用して、SampleApp.exe.configなどの構成ファイルを開きます。これらのメソッドは、関連する構成ファイルの操作に使用できるメソッドとプロパティを公開する Configuration オブジェクトを返します。 メソッドは、読み取りまたは書き込み操作を実行し、ファイルが書き込まれるたびに構成データを作成します。
構成タスクをサポートします。 次の種類は、さまざまな構成タスクをサポートするために使用されます。
既存の構成情報を操作するだけでなく、ConfigurationElement、ConfigurationElementCollection、ConfigurationProperty、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, Boolean) |
指定したクライアント構成ファイルを、指定したファイル マッピング、ユーザー レベル、プリロード オプションを使用する Configuration オブジェクトとして開きます。 |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
指定したクライアント構成ファイルを、指定したファイル マッピングとユーザー レベルを使用する Configuration オブジェクトとして開きます。 |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
指定したファイル マッピングを使用する Configuration オブジェクトとしてマシン構成ファイルを開きます。 |
RefreshSection(String) |
名前付きセクションが次回取得されるときにディスクから再読み取りされるように、名前付きセクションを更新します。 |
適用対象
こちらもご覧ください
.NET