Udostępnij za pośrednictwem


ConfigurationManager Klasa

Definicja

Zapewnia dostęp do plików konfiguracji dla aplikacji klienckich. Tej klasy nie można dziedziczyć.

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

Przykłady

W pierwszym przykładzie pokazano 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 poniższym przykładzie pokazano, jak odczytywać dane z bazy danych przy użyciu parametrów połączenia.

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

Uwagi

Klasa ConfigurationManager umożliwia uzyskiwanie dostępu 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 klasy WebConfigurationManager.

Aby użyć klasy ConfigurationManager, projekt musi odwoływać się do zestawu System.Configuration. 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ć.

Nuta

Nazwa i lokalizacja pliku konfiguracji aplikacji zależą od hosta aplikacji. Aby uzyskać więcej informacji, zobacz Configuring Apps by using Configuration Files.

Możesz użyć wbudowanych typów System.Configuration lub pochodzących z nich do obsługi informacji o konfiguracji. 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 niektórych sekcjach, takich jak appSettings i connectionStrings, użyj klas AppSettings i ConnectionStrings. Te elementy członkowskie wykonują operacje tylko do odczytu, używają pojedynczego buforowanego wystąpienia konfiguracji i są świadomi wielowątkowość.

  • 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 udostępnianych przez klasę ConfigurationManager, aby otworzyć plik konfiguracji, taki jak SampleApp.exe.config. Te metody zwracają obiekt Configuration, który z kolei uwidacznia metody i właściwości, których można użyć do pracy ze 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. Do obsługi różnych zadań konfiguracyjnych służą następujące typy:

    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 ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertyi ConfigurationSection klasy. Aby zapoznać się z przykładem programowego rozszerzania wbudowanego typu konfiguracji, zobacz ConfigurationSection. Aby zapoznać się z przykładem rozszerzania wbudowanego typu konfiguracji korzystającego z modelu opartego na atrybutach, zobacz ConfigurationElement.

Uwagi dotyczące dziedziczenia

Klasa Configuration umożliwia dostęp programowy do edycji plików konfiguracji. Użyj jednej z metod Open udostępnianych przez ConfigurationManager. Te metody zwracają obiekt Configuration, 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 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 nadrzędnych plików konfiguracji.

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

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

  • Uprawnienia 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

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

ConnectionStrings

Pobiera dane ConnectionStringsSection dla 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 dla bieżącej aplikacji jako obiekt Configuration.

OpenExeConfiguration(String)

Otwiera określony plik konfiguracji klienta jako obiekt Configuration.

OpenMachineConfiguration()

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

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

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

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

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

OpenMappedMachineConfiguration(ConfigurationFileMap)

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

RefreshSection(String)

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

Dotyczy

Zobacz też