ConfigurationManager Klasa

Definicja

Zapewnia dostęp do plików konfiguracji dla aplikacji klienckich.Provides access to configuration files for client applications. Klasa ta nie może być dziedziczona.This class cannot be inherited.

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.The first example shows a simple console application that reads application settings, adds a new setting, and updates an existing setting.

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 przyjęto założenie, że projekt zawiera plik App.config, jak pokazano poniżej.The previous example assumes your project has an App.config file as shown below.

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

Poniższy przykład pokazuje, jak używać parametrów połączenia do odczytywania danych z bazy danych.The following example shows how to use a connection string to read data from a database.

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 przyjęto założenie, że projekt zawiera App.config, jak pokazano poniżej.The previous example assumes your project has an App.config as shown below.

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

ConfigurationManagerKlasa umożliwia dostęp do informacji o konfiguracji komputera, aplikacji i użytkownika.The ConfigurationManager class enables you to access machine, application, and user configuration information. Ta klasa zastępuje ConfigurationSettings klasę, która jest przestarzała.This class replaces the ConfigurationSettings class, which is deprecated. W przypadku aplikacji sieci Web należy użyć WebConfigurationManager klasy.For web applications, use the WebConfigurationManager class.

Aby użyć ConfigurationManager klasy, projekt musi odwoływać się do System.Configuration zestawu.To use the ConfigurationManager class, your project must reference the System.Configuration assembly. Domyślnie niektóre szablony projektów, takie jak Aplikacja konsolowa, nie odwołują się do tego zestawu, dlatego należy ręcznie odwoływać się do niego.By default, some project templates, like Console Application, do not reference this assembly so you must manually reference it.

Uwaga

Nazwa i lokalizacja pliku konfiguracji aplikacji zależą od hosta aplikacji.The name and location of the application configuration file depend on the application's host. Aby uzyskać więcej informacji, zobacz Konfigurowanie aplikacji przy użyciu plików konfiguracyjnych.For more information, see Configuring Apps by using Configuration Files.

Można użyć wbudowanych System.Configuration typów lub pochodnych z nich do obsługi informacji o konfiguracji.You can use the built-in System.Configuration types or derive from them to handle configuration information. Korzystając z tych typów, można bezpośrednio korzystać z informacji o konfiguracji i można rozciągnąć pliki konfiguracji w celu uwzględnienia informacji niestandardowych.By using these types, you can work directly with configuration information and you can extend configuration files to include custom information.

ConfigurationManagerKlasa zawiera elementy członkowskie, które umożliwiają wykonywanie następujących zadań:The ConfigurationManager class includes members that enable you to perform the following tasks:

  • Odczytaj sekcję z pliku konfiguracji.Read a section from a configuration file. Aby uzyskać dostęp do informacji o konfiguracji, wywołaj GetSection metodę.To access configuration information, call the GetSection method. W przypadku niektórych sekcji, takich jak appSettings i connectionStrings , AppSettings Użyj ConnectionStrings klas i.For some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. Ci członkowie wykonują operacje tylko do odczytu, używają jednego z buforowanych wystąpień konfiguracji i są świadomi wielowątkowej.These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware.

  • Odczytuj i zapisuj pliki konfiguracji jako całość.Read and write configuration files as a whole. Aplikacja może odczytywać i zapisywać ustawienia konfiguracji na dowolnym poziomie, dla siebie lub dla innych aplikacji lub komputerów, lokalnie lub zdalnie.Your application can read and write configuration settings at any level, for itself or for other applications or computers, locally or remotely. Użyj jednej z metod dostarczonych przez klasę, ConfigurationManager Aby otworzyć plik konfiguracji, taki jak SampleApp.exe.config. Metody te zwracają Configuration obiekt, który z kolei udostępnia metody i właściwości, których można użyć do pracy ze skojarzonymi plikami konfiguracji.Use one of the methods provided by the ConfigurationManager class to open a configuration file such as SampleApp.exe.config. These methods return a Configuration object that in turn exposes methods and properties you can use to work with the associated configuration files. Metody wykonują operacje odczytu lub zapisu oraz tworzą dane konfiguracji za każdym razem, gdy plik jest zapisywana.The methods perform read or write operations and create the configuration data every time that a file is written.

  • Obsługa zadań konfiguracyjnych.Support configuration tasks. Następujące typy są używane do obsługi różnych zadań konfiguracyjnych:The following types are used to support various configuration tasks:

    Oprócz pracy z istniejącymi informacjami o konfiguracji można utworzyć niestandardowe elementy konfiguracji i pracować z nim, rozszerzając wbudowane typy konfiguracji, takie jak ConfigurationElement klasy,, ConfigurationElementCollection ConfigurationProperty i ConfigurationSection .In addition to working with existing configuration information, you can create and work with custom configuration elements by extending the built-in configuration types such as the ConfigurationElement, ConfigurationElementCollection, ConfigurationProperty, and ConfigurationSection classes. Przykład sposobu, w jaki można programowo rozbudować wbudowany typ konfiguracji, zobacz ConfigurationSection .For an example of how to extend a built-in configuration type programmatically, see ConfigurationSection. Przykład sposobu, w jaki można rozbudować wbudowany typ konfiguracji, który używa modelu opartego na atrybutach, znajduje się w temacie ConfigurationElement .For an example of how to extend a built-in configuration type that uses the attribute-based model, see ConfigurationElement.

Uwagi dotyczące dziedziczenia

ConfigurationKlasa umożliwia programistyczny dostęp do edytowania plików konfiguracji.The Configuration class enables programmatic access for editing configuration files. Używasz jednej z metod otwartych dostarczonych przez program ConfigurationManager .You use one of the Open methods provided by ConfigurationManager. Metody te zwracają Configuration obiekt, który z kolei udostępnia wymagane metody i właściwości do obsługi źródłowych plików konfiguracji.These methods return a Configuration object, which in turn provides the required methods and properties to handle the underlying configuration files. Możesz uzyskać dostęp do tych plików do odczytu lub zapisu.You can access these files for reading or writing.

Aby odczytać pliki konfiguracji, użyj GetSection(String) lub GetSectionGroup(String) .To read the configuration files, use GetSection(String) or GetSectionGroup(String). Użytkownik lub proces odczytywania musi mieć następujące uprawnienia:The user or process that reads must have the following permissions: -Uprawnienia do odczytu pliku konfiguracji na bieżącym poziomie hierarchii konfiguracji.- Read permission on the configuration file at the current configuration hierarchy level.

— Uprawnienia do odczytu wszystkich nadrzędnych plików konfiguracji.- Read permissions on all the parent configuration files.

Jeśli aplikacja wymaga dostępu tylko do odczytu do własnej konfiguracji, zalecamy użycie GetSection(String) metody.If your application needs read-only access to its own configuration, we recommend that you use the GetSection(String) method. Ta metoda zapewnia dostęp do buforowanych wartości konfiguracyjnych dla bieżącej aplikacji, które mają lepszą wydajność niż Configuration Klasa.This method provides access to the cached configuration values for the current application, which has better performance than the Configuration class.

Aby zapisać w plikach konfiguracji, należy użyć jednej z Save metod.To write to the configuration files, use one of the Save methods. Użytkownik lub proces zapisu musi mieć następujące uprawnienia:The user or process that writes must have the following permissions: -Uprawnienia do zapisu w pliku konfiguracji i katalogu na bieżącym poziomie hierarchii konfiguracji.- Write permission on the configuration file and directory at the current configuration hierarchy level.

— Uprawnienia do odczytu wszystkich plików konfiguracji.- Read permissions on all the configuration files.

Właściwości

AppSettings

Pobiera AppSettingsSection dane dla domyślnej konfiguracji bieżącej aplikacji.Gets the AppSettingsSection data for the current application's default configuration.

ConnectionStrings

Pobiera ConnectionStringsSection dane dla domyślnej konfiguracji bieżącej aplikacji.Gets the ConnectionStringsSection data for the current application's default configuration.

Metody

GetSection(String)

Pobiera określoną sekcję konfiguracyjną dla domyślnej konfiguracji bieżącej aplikacji.Retrieves a specified configuration section for the current application's default configuration.

OpenExeConfiguration(ConfigurationUserLevel)

Otwiera plik konfiguracyjny dla bieżącej aplikacji jako Configuration obiekt.Opens the configuration file for the current application as a Configuration object.

OpenExeConfiguration(String)

Otwiera określony plik konfiguracji klienta jako Configuration obiekt.Opens the specified client configuration file as a Configuration object.

OpenMachineConfiguration()

Otwiera plik konfiguracji komputera na bieżącym komputerze jako Configuration obiekt.Opens the machine configuration file on the current computer as a Configuration object.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Otwiera określony plik konfiguracji klienta jako Configuration obiekt używający określonego mapowania plików i poziomu użytkownika.Opens the specified client configuration file as a Configuration object that uses the specified file mapping and user level.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Otwiera określony plik konfiguracji klienta jako Configuration obiekt używający określonego mapowania plików, poziomu użytkownika i opcji wstępnego ładowania.Opens the specified client configuration file as a Configuration object that uses the specified file mapping, user level, and preload option.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Otwiera plik konfiguracji komputera jako Configuration obiekt, który używa określonego mapowania pliku.Opens the machine configuration file as a Configuration object that uses the specified file mapping.

RefreshSection(String)

Odświeża sekcję nazwaną, aby przy następnym pobraniu zostanie ponownie odczytany z dysku.Refreshes the named section so the next time that it is retrieved it will be re-read from disk.

Dotyczy

Zobacz też