ConfigurationManager Klasa

Definicja

Zapewnia dostęp do plików konfiguracji dla aplikacji klienckich. Klasa ta nie może być dziedziczona.

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
Dziedziczenie
ConfigurationManager

Przykłady

W pierwszym przykładzie przedstawiono prostą aplikację konsolową, która odczytuje ustawienia aplikacji, dodaje nowe ustawienie i aktualizuje istniejące ustawienie.

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  

W poprzednim przykładzie założono, że projekt ma plik App.config, jak pokazano poniżej.

<?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>  

W poniższym przykładzie pokazano, jak używać parametrów połączenia do odczytywania danych z bazy danych.

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  

W poprzednim przykładzie założono, że projekt ma App.config, jak pokazano poniżej.

<?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>  

Uwagi

Klasa ConfigurationManager umożliwia dostęp do informacji o konfiguracji komputera, aplikacji i użytkownika. Ta klasa zastępuje klasę ConfigurationSettings , która jest przestarzała. W przypadku aplikacji internetowych użyj WebConfigurationManager klasy .

Aby użyć ConfigurationManager klasy, projekt musi odwoływać się do System.Configuration zestawu. Domyślnie niektóre szablony projektów, takie jak aplikacja konsolowa, nie odwołują się do tego zestawu, dlatego należy go ręcznie odwołać.

Uwaga

Nazwa i lokalizacja pliku konfiguracji aplikacji zależą od hosta aplikacji. Aby uzyskać więcej informacji, zobacz Konfigurowanie aplikacji przy użyciu plików konfiguracji.

Do obsługi informacji o konfiguracji można użyć wbudowanych System.Configuration typów lub pochodzących z nich. Korzystając z tych typów, można pracować bezpośrednio z informacjami o konfiguracji i rozszerzyć pliki konfiguracji w celu uwzględnienia informacji niestandardowych.

Klasa ConfigurationManager zawiera elementy członkowskie, które umożliwiają wykonywanie następujących zadań:

  • Przeczytaj sekcję z pliku konfiguracji. Aby uzyskać dostęp do informacji o konfiguracji, wywołaj metodę GetSection . W przypadku niektórych sekcji, takich jak appSettings i , użyj AppSettings klas i ConnectionStringsconnectionStrings. Członkowie ci wykonują operacje tylko do odczytu, używają pojedynczego buforowanego wystąpienia konfiguracji i są świadomi wielu elementów.

  • Odczytywanie i zapisywanie plików konfiguracji jako całości. Aplikacja może odczytywać i zapisywać ustawienia konfiguracji na dowolnym poziomie, dla siebie lub dla innych aplikacji lub komputerów, lokalnie lub zdalnie. Użyj jednej z metod dostarczonych przez ConfigurationManager klasę, aby otworzyć plik konfiguracji, taki jak SampleApp.exe.config. Te metody zwracają Configuration obiekt, który z kolei uwidacznia metody i właściwości, których można użyć do pracy z skojarzonymi plikami konfiguracji. Metody wykonują operacje odczytu lub zapisu i tworzą dane konfiguracji za każdym razem, gdy plik jest zapisywany.

  • Obsługa zadań konfiguracji. Następujące typy są używane do obsługi różnych zadań konfiguracji:

    Oprócz pracy z istniejącymi informacjami o konfiguracji można tworzyć niestandardowe elementy konfiguracji i pracować z nimi, rozszerzając wbudowane typy konfiguracji, takie jak ConfigurationElementklasy , ConfigurationElementCollection, ConfigurationPropertyi ConfigurationSection . Przykładowy sposób programowego rozszerzania wbudowanego typu konfiguracji można znaleźć w temacie ConfigurationSection. Aby zapoznać się z przykładem rozszerzenia wbudowanego typu konfiguracji korzystającego z modelu opartego na atrybutach, zobacz ConfigurationElement.

Uwagi dotyczące dziedziczenia

Klasa Configuration umożliwia programowy dostęp do edytowania plików konfiguracji. Należy użyć jednej z metod udostępnianych przez ConfigurationManagerusługę Open . Te metody zwracają Configuration obiekt, który z kolei udostępnia wymagane metody i właściwości do obsługi bazowych plików konfiguracji. Dostęp do tych plików można uzyskać do odczytu lub zapisu.

Aby odczytać pliki konfiguracji, użyj polecenia GetSection(String) lub GetSectionGroup(String). Użytkownik lub proces odczytu musi mieć następujące uprawnienia:

  • Uprawnienie do odczytu w pliku konfiguracji na bieżącym poziomie hierarchii konfiguracji.

  • Uprawnienia do odczytu dla wszystkich plików konfiguracji nadrzędnej.

Jeśli aplikacja wymaga dostępu tylko do odczytu do własnej konfiguracji, zalecamy użycie GetSection(String) metody . Ta metoda zapewnia dostęp do buforowanych wartości konfiguracji dla bieżącej aplikacji, która ma lepszą wydajność niż Configuration klasa.

Aby zapisać pliki konfiguracji, użyj jednej z Save metod. Użytkownik lub proces zapisu musi mieć następujące uprawnienia:

  • Uprawnienie do zapisu w pliku konfiguracji i katalogu na bieżącym poziomie hierarchii konfiguracji.

  • Uprawnienia do odczytu dla wszystkich plików konfiguracji.

Właściwości

AppSettings

AppSettingsSection Pobiera dane domyślnej konfiguracji bieżącej aplikacji.

ConnectionStrings

ConnectionStringsSection Pobiera dane domyślnej konfiguracji bieżącej aplikacji.

Metody

GetSection(String)

Pobiera określoną sekcję konfiguracji dla domyślnej konfiguracji bieżącej aplikacji.

OpenExeConfiguration(ConfigurationUserLevel)

Otwiera plik konfiguracji bieżącej aplikacji jako Configuration obiekt.

OpenExeConfiguration(String)

Otwiera określony plik konfiguracji klienta jako Configuration obiekt.

OpenMachineConfiguration()

Otwiera plik konfiguracji maszyny na bieżącym komputerze jako Configuration obiekt.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Otwiera określony plik konfiguracji klienta jako Configuration obiekt, który używa określonego mapowania plików i poziomu użytkownika.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Otwiera określony plik konfiguracji klienta jako Configuration obiekt, który używa określonego mapowania plików, poziomu użytkownika i wstępnego ładowania.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Otwiera plik konfiguracji maszyny jako Configuration obiekt, który używa określonego mapowania plików.

RefreshSection(String)

Odświeża nazwaną sekcję, aby następnym razem, gdy zostanie pobrany, zostanie on ponownie odczytany z dysku.

Dotyczy

Zobacz też