1.ConfigurationManager和 WebConfigurationManager類:
?
??? 使用 ConfigurationManager 類,可以訪問計算機和應用程序的配置信息。ConfigurationManager 是處理客戶端應用程序配置文件的首選方法;不推薦使用任何其他方法。對于 Web 應用程序,建議使用 WebConfigurationManager 類。
客戶端應用程序在客戶端計算機上運行,而 Web 應用程序在客戶端連接到的服務器計算機上運行。
可以使用內置的 System.Configuration 類型或從它們派生以處理配置信息。通過使用這些類型,可以直接處理配置信息,且能對配置文件進行擴展以包括自定義信息。
ConfigurationManager 類包括可用來執行以下任務的成員。
?????? 從配置文件中讀取一個節。若要訪問配置信息,請使用 GetSection。對于像 appSettings 和 connectionStrings 這樣的一些節,請使用 AppSettings 和 ConnectionStrings 類。上面提到的方法執行只讀操作,使用配置的單個緩存實例,并且可識別多線程。
?????? 將配置文件作為一個整體進行讀取和寫入。應用程序能夠讀寫任何級別的配置設置,不管是自己的還是其他應用程序或計算機的,也不管是本地的還是遠程的。使用 ConfigurationManager 類提供的方法之一可打開類似 Myapp.exe.config 這樣的配置文件。這些方法返回一個 Configuration 對象,該對象又公開可用于處理關聯的配置文件的方法和屬性。這些方法執行讀取或寫入操作,并于每次寫入文件時重新創建配置數據。
?????? 支持配置任務。下列類型用于支持各種配置任務:
SectionInformation
PropertyInformation
PropertyInformationCollection
ElementInformation
ContextInformation
ConfigurationSectionGroup
ConfigurationSectionGroupCollection
除了處理現有的配置信息外,還可以通過擴展內置的配置類型(如 ConfigurationElement、ConfigurationElementCollection、ConfigurationProperty 和 ConfigurationSection 類),來創建和處理自定義配置元素。有關如何以編程方式擴展內置配置類型的示例,參見 ConfigurationSection。有關如何使用基于屬性的模型擴展內置配置類型的示例,請參見 ConfigurationElement。
Configuration 類允許進行編程訪問以編輯配置文件。使用 ConfigurationManager 提供的打開方法中的一種。這些方法返回一個 Configuration 對象,該對象又提供處理基礎配置文件所需的方法和屬性。可以訪問這些文件以便進行讀取或寫入。 若要讀取配置文件,請使用 GetSection 或 GetSectionGroup 讀取配置信息。進行讀取的用戶或過程必須具有下面的權限: 如果應用程序需要對它自己的配置進行只讀訪問,建議使用 GetSection 方法。此方法提供對當前應用程序的緩存配置值的訪問,它的性能比 Configuration 類更好。
2.Configuration 類:
Configuration類實例表示的配置設置的合并視圖,這些配置設置適用于特定的物理實體(如計算機)或邏輯實體(如應用程序或網站)。指定的邏輯實體可以存在于本地計算機或遠程服務器上。 當某指定的實體沒有配置文件時,則 Configuration 對象表示 Machine.config 文件定義的默認配置設置。通過使用該類定義的 Open 配置方法之一,可以獲取 Configuration 對象。使用Save方法之一,可以保存Coonfiguration對象的配置信息到磁盤文件中
3.?ConfigurationSection 類
??? 可以使用 ConfigurationSection 實現自定義的節類型。擴展 ConfigurationSection 類,以提供對自定義配置節的自定義處理和編程訪問。 所有的默認配置節都由擴展 ConfigurationSection 類的類來表示。
使用 configSections 中的項注冊其處理類型。
????? 3.1 ConfigurationSection實現說明:
?????? 可以使用編程或聲明性(屬性化)代碼編寫模型創建自定義配置節。
?????????????? 3.1.1 編程模型。此模型要求為每個節屬性 (Attribute) 創建一個用于獲取和/或設置其值的屬性 (Property),并將其添加 到基礎 ConfigurationElement 基類的內部屬性 (Property) 包中。
?????????????? 3.1.2 聲明性模型。這種比較簡單的模型也稱為屬性 (Attribute) 化模型,允許您通過使用屬性 (Property) 來定義節屬性 (Attribute),并使用屬性 (Attribute) 對其進行修飾。這些屬性 (Attribute) 將屬性 (Property) 類型及其默認值通知給配置系統。配置系統將使用通過反射獲取的這些信息為您創建節屬性 (Property) 對象并執行所需的初始化。
????3.2 Configuration 是允許進行編程訪問以編輯配置文件的類。您可以按照以下說明訪問這些文件以進行讀寫操作。
??????????????3.2.1 讀取。使用 GetSection 或 GetSectionGroup 讀取配置信息。請注意,進行讀取操作的用戶或進程必須具有以下權限:
?????? 在當前配置層次結構級別下對配置文件的讀取權限。
?????? 對所有父級配置文件進行讀取的權限。
?????? 如果應用程序需要對其自己的配置進行只讀訪問,建議對于 Web 應用程序使用 GetSection 重載方法。或使用 GetSection 方法(針對客戶端應用程序)。 這些方法可提供對當前應用程序的緩存配置值的訪問,且其性能要好于 Configuration 類。
?????? 如果使用帶有路徑參數的靜態 GetSection 方法,則該路徑參數必須引用代碼正在運行的應用程序,否則,該參數將被忽略,并返回當前正在運行的應用程序的配置信息。
??????????????3.2.2 寫入。可使用 Save 方法之一寫入配置信息。請注意,進行寫入操作的用戶或進程必須具有以下權限:
?????? 對當前配置層次結構級別的配置文件和目錄的寫入權限。
?????? 對所有配置文件的讀取權限。