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 包含可讓您執行下列工作的成員:

給繼承者的注意事項

類別 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)

重新整理具名區段,以便下次擷取它時,會從磁碟重新讀取它。

適用於

另請參閱