ConfigurationManager Klasse

Definition

Stellt Zugriff auf Konfigurationsdateien für Clientanwendungen bereit. Diese Klasse kann nicht vererbt werden.

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

Beispiele

Das erste Beispiel zeigt eine einfache Konsolenanwendung, die Anwendungseinstellungen liest, eine neue Einstellung hinzufügt und eine vorhandene Einstellung aktualisiert.

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  

Im vorherigen Beispiel wird davon ausgegangen, dass ihr Projekt eine App.config Datei aufweist, wie unten dargestellt.

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

Das folgende Beispiel zeigt, wie Eine Verbindungszeichenfolge zum Lesen von Daten aus einer Datenbank verwendet wird.

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  

Im vorherigen Beispiel wird davon ausgegangen, dass Ihr Projekt eine App.config hat, wie unten dargestellt.

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

Hinweise

Mit der ConfigurationManager Klasse können Sie auf Computer-, Anwendungs- und Benutzerkonfigurationsinformationen zugreifen. Diese Klasse ersetzt die ConfigurationSettings Klasse, die veraltet ist. Verwenden Sie für Webanwendungen die WebConfigurationManager Klasse.

Um die ConfigurationManager Klasse zu verwenden, muss Ihr Projekt auf die System.Configuration Assembly verweisen. Standardmäßig verweisen einige Projektvorlagen, z. B. Konsolenanwendung, nicht auf diese Assembly, damit Sie manuell darauf verweisen müssen.

Hinweis

Der Name und speicherort der Anwendungskonfigurationsdatei hängt vom Host der Anwendung ab. Weitere Informationen finden Sie unter Konfigurieren von Apps mithilfe von Konfigurationsdateien.

Sie können die integrierten System.Configuration Typen verwenden oder von ihnen abgeleitet werden, um Konfigurationsinformationen zu behandeln. Mithilfe dieser Typen können Sie direkt mit Konfigurationsinformationen arbeiten und Konfigurationsdateien erweitern, um benutzerdefinierte Informationen einzuschließen.

Die ConfigurationManager Klasse enthält Elemente, mit denen Sie die folgenden Aufgaben ausführen können:

  • Lesen Sie einen Abschnitt aus einer Konfigurationsdatei. Rufen Sie die GetSection Methode auf, um auf Konfigurationsinformationen zuzugreifen. Verwenden Sie für einige Abschnitte, z appSettings . B. und connectionStrings, die AppSettings klassen ConnectionStrings . Diese Member führen schreibgeschützte Vorgänge aus, verwenden eine einzelne zwischengespeicherte Instanz der Konfiguration und sind multithread-fähig.

  • Konfigurationsdateien als Ganzes lesen und schreiben. Ihre Anwendung kann Konfigurationseinstellungen auf jeder Ebene, für sich selbst oder für andere Anwendungen oder Computer lokal oder remote lesen und schreiben. Verwenden Sie eine der Methoden, die von der ConfigurationManager Klasse bereitgestellt werden, um eine Konfigurationsdatei wie SampleApp.exe.config zu öffnen. Diese Methoden geben ein Configuration Objekt zurück, das wiederum Methoden und Eigenschaften verfügbar macht, mit denen Sie mit den zugeordneten Konfigurationsdateien arbeiten können. Die Methoden führen Lese- oder Schreibvorgänge aus und erstellen die Konfigurationsdaten jedes Mal, wenn eine Datei geschrieben wird.

  • Unterstützung von Konfigurationsaufgaben. Die folgenden Typen werden verwendet, um verschiedene Konfigurationsaufgaben zu unterstützen:

    Zusätzlich zum Arbeiten mit vorhandenen Konfigurationsinformationen können Sie benutzerdefinierte Konfigurationselemente erstellen und arbeiten, indem Sie die integrierten Konfigurationstypen wie die integrierten Konfigurationstypen wie die ConfigurationElement, ConfigurationElementCollectionConfigurationProperty, und ConfigurationSection Klassen erweitern. Ein Beispiel zum programmgesteuerten Erweitern eines integrierten Konfigurationstyps finden Sie unter ConfigurationSection. Ein Beispiel zum Erweitern eines integrierten Konfigurationstyps, der das attributbasierte Modell verwendet, finden Sie unter ConfigurationElement.

Hinweise für Vererber

Die Configuration Klasse ermöglicht programmgesteuerten Zugriff für die Bearbeitung von Konfigurationsdateien. Sie verwenden eine der open-Methoden, die von ConfigurationManager. Diese Methoden geben ein Configuration Objekt zurück, das wiederum die erforderlichen Methoden und Eigenschaften zum Behandeln der zugrunde liegenden Konfigurationsdateien bereitstellt. Sie können auf diese Dateien zugreifen, um zu lesen oder zu schreiben.

Verwenden oder GetSectionGroup(String)lesen Sie die KonfigurationsdateienGetSection(String). Der Benutzer oder prozess, der liest, muss über die folgenden Berechtigungen verfügen:

  • Leseberechtigung für die Konfigurationsdatei auf der aktuellen Konfigurationshierarchieebene.

  • Berechtigungen für alle übergeordneten Konfigurationsdateien lesen.

Wenn Ihre Anwendung schreibgeschützten Zugriff auf ihre eigene Konfiguration benötigt, empfehlen wir, die GetSection(String) Methode zu verwenden. Diese Methode bietet Zugriff auf die zwischengespeicherten Konfigurationswerte für die aktuelle Anwendung, die eine bessere Leistung als die Configuration Klasse aufweist.

Verwenden Sie eine der Save Methoden, um in die Konfigurationsdateien zu schreiben. Der Benutzer oder prozess, der schreibt, muss über die folgenden Berechtigungen verfügen: – Schreibberechtigung für die Konfigurationsdatei und das Verzeichnis auf der aktuellen Konfigurationshierarchieebene.

  • Berechtigungen für alle Konfigurationsdateien lesen.

Eigenschaften

AppSettings

Ruft die AppSettingsSection-Daten für die Standardkonfiguration der aktuellen Anwendung ab.

ConnectionStrings

Ruft die ConnectionStringsSection-Daten für die Standardkonfiguration der aktuellen Anwendung ab.

Methoden

GetSection(String)

Ruft einen angegebenen Konfigurationsabschnitt für die Standardkonfiguration der aktuellen Anwendung ab.

OpenExeConfiguration(ConfigurationUserLevel)

Öffnet die Konfigurationsdatei für die aktuelle Anwendung als Configuration-Objekt.

OpenExeConfiguration(String)

Öffnet die angegebene Clientkonfigurationsdatei als Configuration-Objekt.

OpenMachineConfiguration()

Öffnet die Computerkonfigurationsdatei auf dem aktuellen Computer als Configuration-Objekt.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Öffnet die angegebene Clientkonfigurationsdatei als Configuration-Objekt mithilfe der angegebenen Dateizuordnung und Benutzerebene.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Öffnet die angegebene Clientkonfigurationsdatei als Configuration-Objekt mithilfe der angegebenen Dateizuordnung, Benutzerebene und Vorladeoption.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Öffnet die Computerkonfigurationsdatei als Configuration-Objekt, das die angegebene Dateizuordnung verwendet.

RefreshSection(String)

Aktualisiert den benannten Abschnitt. Dadurch wird er beim nächsten Abrufen erneut vom Datenträger gelesen.

Gilt für:

Siehe auch