Sdílet prostřednictvím


ConfigurationManager Třída

Definice

Poskytuje přístup ke konfiguračním souborům pro klientské aplikace. Tuto třídu nelze zdědit.

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
Dědičnost
ConfigurationManager

Příklady

První příklad ukazuje jednoduchou konzolovou aplikaci, která čte nastavení aplikace, přidá nové nastavení a aktualizuje existující nastavení.

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

Následující příklad ukazuje, jak pomocí připojovacího řetězce číst data z databáze.

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

Poznámky

Třída ConfigurationManager umožňuje přístup k informacím o konfiguraci počítače, aplikace a uživatele. Tato třída nahrazuje třídu ConfigurationSettings, která je zastaralá. Pro webové aplikace použijte třídu WebConfigurationManager.

Chcete-li použít třídu ConfigurationManager, musí váš projekt odkazovat na System.Configuration sestavení. Ve výchozím nastavení některé šablony projektů, jako je konzolová aplikace, neodkazují na toto sestavení, takže na něj musíte odkazovat ručně.

Poznámka

Název a umístění konfiguračního souboru aplikace závisí na hostiteli aplikace. Další informace najdete v tématu Konfigurace aplikací pomocí konfiguračních souborů.

K zpracování informací o konfiguraci můžete použít předdefinované typy System.Configuration nebo je odvozovat. Pomocí těchto typů můžete pracovat přímo s informacemi o konfiguraci a rozšířit konfigurační soubory tak, aby zahrnovaly vlastní informace.

Třída ConfigurationManager obsahuje členy, které umožňují provádět následující úlohy:

  • Přečtěte si oddíl z konfiguračního souboru. Pokud chcete získat přístup k informacím o konfiguraci, zavolejte metodu GetSection. U některých oddílů, jako jsou appSettings a connectionStrings, použijte třídy AppSettings a ConnectionStrings. Tito členové provádějí operace jen pro čtení, používají jednu instanci konfigurace uloženou v mezipaměti a jsou pracující s více vlákny.

  • Čtení a zápis konfiguračních souborů jako celku Vaše aplikace může číst a zapisovat nastavení konfigurace na libovolné úrovni pro sebe nebo pro jiné aplikace nebo počítače místně nebo vzdáleně. Pomocí jedné z metod poskytovaných ConfigurationManager třídy otevřete konfigurační soubor, například SampleApp.exe.config. Tyto metody vrací Configuration objekt, který zase zveřejňuje metody a vlastnosti, které můžete použít pro práci s přidruženými konfiguračními soubory. Metody provádějí operace čtení nebo zápisu a vytvářejí konfigurační data při každém zápisu souboru.

  • Podpora úloh konfigurace K podpoře různých úloh konfigurace se používají následující typy:

    Kromě práce s existujícími informacemi o konfiguraci můžete vytvářet a pracovat s vlastními prvky konfigurace rozšířením předdefinovaných typů konfigurace, jako jsou ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertya třídy ConfigurationSection. Příklad rozšíření integrovaného typu konfigurace prostřednictvím kódu programu najdete v tématu ConfigurationSection. Příklad rozšíření integrovaného typu konfigurace, který používá model založený na atributech, najdete v tématu ConfigurationElement.

Poznámky pro dědice

Třída Configuration umožňuje programový přístup pro úpravy konfiguračních souborů. Použijete jednu z metod Open poskytovaných ConfigurationManager. Tyto metody vrací objekt Configuration, který zase poskytuje požadované metody a vlastnosti pro zpracování podkladových konfiguračních souborů. K těmto souborům se dostanete pro čtení nebo zápis.

Ke čtení konfiguračních souborů použijte GetSection(String) nebo GetSectionGroup(String). Uživatel nebo proces, který čte, musí mít následující oprávnění:

  • Oprávnění ke čtení konfiguračního souboru na aktuální úrovni hierarchie konfigurace

  • Oprávnění ke čtení u všech nadřazených konfiguračních souborů

Pokud vaše aplikace potřebuje přístup jen pro čtení k vlastní konfiguraci, doporučujeme použít metodu GetSection(String). Tato metoda poskytuje přístup k hodnotám konfigurace uložené v mezipaměti pro aktuální aplikaci, která má lepší výkon než Configuration třída.

K zápisu do konfiguračních souborů použijte jednu z Save metod. Uživatel nebo proces, který zapisuje, musí mít následující oprávnění:

  • Oprávnění k zápisu konfiguračního souboru a adresáře na aktuální úrovni hierarchie konfigurace

  • Oprávnění ke čtení všech konfiguračních souborů.

Vlastnosti

AppSettings

Získá AppSettingsSection data pro výchozí konfiguraci aktuální aplikace.

ConnectionStrings

Získá ConnectionStringsSection data pro výchozí konfiguraci aktuální aplikace.

Metody

GetSection(String)

Načte zadanou část konfigurace pro výchozí konfiguraci aktuální aplikace.

OpenExeConfiguration(ConfigurationUserLevel)

Otevře konfigurační soubor pro aktuální aplikaci jako objekt Configuration.

OpenExeConfiguration(String)

Otevře zadaný konfigurační soubor klienta jako objekt Configuration.

OpenMachineConfiguration()

Otevře konfigurační soubor počítače v aktuálním počítači jako objekt Configuration.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Otevře zadaný konfigurační soubor klienta jako objekt Configuration, který používá zadané mapování souborů, úroveň uživatele a možnost předběžného načtení.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Otevře zadaný konfigurační soubor klienta jako objekt Configuration, který používá zadané mapování souborů a úroveň uživatele.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Otevře konfigurační soubor počítače jako objekt Configuration, který používá zadané mapování souborů.

RefreshSection(String)

Aktualizuje pojmenovaný oddíl tak, aby se při příštím načtení znovu načetl z disku.

Platí pro

Viz také