共用方式為


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

下列範例示範如何使用連接字串從資料庫讀取數據。

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 元件。 根據預設,某些項目範本,例如控制台應用程式,不會參考此元件,因此您必須手動參考它。

注意

應用程式組態檔的名稱和位置取決於應用程式的主機。 如需詳細資訊,請參閱使用組態檔設定應用程式。

您可以使用內建 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, Boolean)

開啟指定的用戶端組態檔做為 Configuration 物件,該物件會使用指定的檔案對應、用戶層級和預先載入選項。

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

開啟指定的用戶端組態檔作為使用指定檔案對應和用戶層級的 Configuration 物件。

OpenMappedMachineConfiguration(ConfigurationFileMap)

以使用指定檔案對應的 Configuration 對象開啟計算機組態檔。

RefreshSection(String)

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

適用於

另請參閱