ConfigurationManager Třída

Definice

Poskytuje přístup ke konfiguračním souborům pro klientské aplikace. Tato třída se nemůže dě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á přeč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  

Předchozí příklad předpokládá, že projekt má soubor App.config, jak je znázorněno níže.

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

Následující příklad ukazuje, jak použít připojovací řetězec ke čtení dat 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  

Předchozí příklad předpokládá, že váš projekt má App.config, jak je znázorněno níže.

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

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 ConfigurationSettings třídu , která je zastaralá. U webových aplikací použijte WebConfigurationManager třídu .

Chcete-li použít ConfigurationManager třídu , projekt musí odkazovat na System.Configuration sestavení. Ve výchozím nastavení některé šablony projektů, například 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ů.

Ke zpracování informací o konfiguraci můžete použít předdefinované System.Configuration typy nebo z nich odvozené. 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:

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

  • Čtení a zápis konfiguračních souborů jako celku. Vaše aplikace může číst a zapisovat konfigurační nastavení 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řídou otevřete konfigurační soubor, například SampleApp.exe.config. Tyto metody vrátí Configuration objekt, který pak zpřístupň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.

  • Úlohy konfigurace podpory. Následující typy slouží k podpoře různých úloh konfigurace:

    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 ConfigurationElementjsou třídy , ConfigurationElementCollection, ConfigurationPropertya ConfigurationSection . Příklad programového rozšíření integrovaného typu konfigurace 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 Open metod poskytovaných nástrojem ConfigurationManager. Tyto metody vrátí Configuration objekt, který pak poskytuje požadované metody a vlastnosti pro zpracování podkladových konfiguračních souborů. K těmto souborům můžete přistupovat ke čtení nebo zápisu.

Ke čtení konfiguračních souborů použijte nebo GetSection(String)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í všech nadřazených konfiguračních souborů.

Pokud vaše aplikace potřebuje přístup jen pro čtení ke své vlastní konfiguraci, doporučujeme použít metodu GetSection(String) . Tato metoda poskytuje přístup k hodnotám konfigurace 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 do 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

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

ConnectionStrings

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

Metody

GetSection(String)

Načte zadaný oddíl konfigurace pro výchozí konfiguraci aktuální aplikace.

OpenExeConfiguration(ConfigurationUserLevel)

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

OpenExeConfiguration(String)

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

OpenMachineConfiguration()

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

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

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

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

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

OpenMappedMachineConfiguration(ConfigurationFileMap)

Otevře konfigurační soubor počítače jako Configuration objekt, 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é