ConfigurationManager Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 über eine App.config-Datei verfügt, wie unten gezeigt.
<?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 Sie eine Verbindungszeichenfolge verwenden, um Daten aus einer Datenbank zu lesen.
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 über eine App.config verfügt, wie unten gezeigt.
<?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 ConfigurationManager der -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, sodass Sie manuell darauf verweisen müssen.
Hinweis
Name und Speicherort der Anwendungskonfigurationsdatei hängen 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 ableiten, um Konfigurationsinformationen zu verarbeiten. Mithilfe dieser Typen können Sie direkt mit Konfigurationsinformationen arbeiten und Konfigurationsdateien erweitern, um benutzerdefinierte Informationen einzuschließen.
Die ConfigurationManager -Klasse enthält Member, 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 wie
appSettings
undconnectionStrings
die AppSettings Klassen und ConnectionStrings . Diese Member führen schreibgeschützte Vorgänge aus, verwenden eine einzelne zwischengespeicherte instance der Konfiguration und sind Multithread-fähig.Lesen und Schreiben von Konfigurationsdateien als Ganzes. Ihre Anwendung kann Konfigurationseinstellungen auf jeder Ebene lesen und schreiben, für sich selbst oder für andere Anwendungen oder Computer, lokal oder remote. Verwenden Sie eine der von der ConfigurationManager -Klasse bereitgestellten Methoden, 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, die Sie zum Arbeiten mit den zugeordneten Konfigurationsdateien verwenden 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 verwenden, indem Sie die integrierten Konfigurationstypen wie die ConfigurationElementKlassen , ConfigurationElementCollection, ConfigurationPropertyund ConfigurationSection 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 zum Bearbeiten von Konfigurationsdateien. Sie verwenden eine der Open
von bereitgestellten ConfigurationManagerMethoden. Diese Methoden geben ein Configuration -Objekt zurück, das wiederum die erforderlichen Methoden und Eigenschaften bereitstellt, um die zugrunde liegenden Konfigurationsdateien zu verarbeiten. Sie können auf diese Dateien zum Lesen oder Schreiben zugreifen.
Verwenden Sie GetSection(String) zum Lesen der Konfigurationsdateien oder GetSectionGroup(String). Der Benutzer oder Prozess, der gelesen wird, muss über die folgenden Berechtigungen verfügen:
Lesen Sie die Berechtigung für die Konfigurationsdatei auf der aktuellen Konfigurationshierarchieebene.
Lesen Sie Berechtigungen für alle übergeordneten Konfigurationsdateien.
Wenn Ihre Anwendung schreibgeschützten Zugriff auf ihre eigene Konfiguration benötigt, wird empfohlen, 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:
Schreiben Sie die Berechtigung für die Konfigurationsdatei und das Verzeichnis auf der aktuellen Konfigurationshierarchieebene.
Lesen Sie Berechtigungen für alle Konfigurationsdateien.
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. |