ConfigurationManager Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia dostęp do plików konfiguracji dla aplikacji klienckich. Klasa ta nie może być dziedziczona.
public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
- Dziedziczenie
-
ConfigurationManager
Przykłady
W pierwszym przykładzie przedstawiono prostą aplikację konsolową, która odczytuje ustawienia aplikacji, dodaje nowe ustawienie i aktualizuje istniejące ustawienie.
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 założono, że projekt ma plik App.config, jak pokazano poniżej.
<?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>
W poniższym przykładzie pokazano, jak używać parametry połączenia do odczytywania danych z bazy danych.
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 założono, że projekt ma App.config, jak pokazano poniżej.
<?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
Klasa ConfigurationManager umożliwia dostęp do informacji o konfiguracji komputera, aplikacji i użytkownika. Ta klasa zastępuje klasę ConfigurationSettings , która jest przestarzała. W przypadku aplikacji internetowych użyj WebConfigurationManager klasy .
Aby użyć ConfigurationManager klasy, projekt musi odwoływać się do System.Configuration
zestawu. Domyślnie niektóre szablony projektów, takie jak aplikacja konsolowa, nie odwołują się do tego zestawu, dlatego należy go ręcznie odwołać.
Uwaga
Nazwa i lokalizacja pliku konfiguracji aplikacji zależą od hosta aplikacji. Aby uzyskać więcej informacji, zobacz Konfigurowanie aplikacji przy użyciu plików konfiguracji.
Do obsługi informacji o konfiguracji można użyć wbudowanych System.Configuration typów lub pochodzących z nich. Korzystając z tych typów, można pracować bezpośrednio z informacjami o konfiguracji i rozszerzyć pliki konfiguracji w celu uwzględnienia informacji niestandardowych.
Klasa ConfigurationManager zawiera elementy członkowskie, które umożliwiają wykonywanie następujących zadań:
Przeczytaj sekcję z pliku konfiguracji. Aby uzyskać dostęp do informacji o konfiguracji, wywołaj metodę GetSection . W przypadku niektórych sekcji, takich jak
appSettings
i , użyj AppSettings klas i ConnectionStringsconnectionStrings
. Członkowie ci wykonują operacje tylko do odczytu, używają pojedynczego buforowanego wystąpienia konfiguracji i są świadomi wielu elementów.Odczytywanie i zapisywanie plików konfiguracji jako całości. Aplikacja może odczytywać i zapisywać ustawienia konfiguracji na dowolnym poziomie, dla siebie lub dla innych aplikacji lub komputerów, lokalnie lub zdalnie. Użyj jednej z metod dostarczonych przez ConfigurationManager klasę, aby otworzyć plik konfiguracji, taki jak SampleApp.exe.config. Te metody zwracają Configuration obiekt, który z kolei uwidacznia metody i właściwości, których można użyć do pracy z skojarzonymi plikami konfiguracji. Metody wykonują operacje odczytu lub zapisu i tworzą dane konfiguracji za każdym razem, gdy plik jest zapisywany.
Obsługa zadań konfiguracji. Następujące typy są używane do obsługi różnych zadań konfiguracji:
Oprócz pracy z istniejącymi informacjami o konfiguracji można tworzyć niestandardowe elementy konfiguracji i pracować z nimi, rozszerzając wbudowane typy konfiguracji, takie jak ConfigurationElementklasy , ConfigurationElementCollection, ConfigurationPropertyi ConfigurationSection . Przykładowy sposób programowego rozszerzania wbudowanego typu konfiguracji można znaleźć w temacie ConfigurationSection. Aby zapoznać się z przykładem rozszerzenia wbudowanego typu konfiguracji korzystającego z modelu opartego na atrybutach, zobacz ConfigurationElement.
Uwagi dotyczące dziedziczenia
Klasa Configuration umożliwia programowy dostęp do edytowania plików konfiguracji. Należy użyć jednej z metod udostępnianych przez ConfigurationManagerusługę Open
. Te metody zwracają Configuration obiekt, który z kolei udostępnia wymagane metody i właściwości do obsługi bazowych plików konfiguracji. Dostęp do tych plików można uzyskać do odczytu lub zapisu.
Aby odczytać pliki konfiguracji, użyj polecenia GetSection(String) lub GetSectionGroup(String). Użytkownik lub proces odczytu musi mieć następujące uprawnienia:
Uprawnienie do odczytu w pliku konfiguracji na bieżącym poziomie hierarchii konfiguracji.
Uprawnienia do odczytu dla wszystkich plików konfiguracji nadrzędnej.
Jeśli aplikacja potrzebuje dostępu tylko do odczytu do własnej konfiguracji, zalecamy użycie GetSection(String) metody . Ta metoda zapewnia dostęp do buforowanych wartości konfiguracji dla bieżącej aplikacji, która ma lepszą wydajność niż Configuration klasa.
Aby zapisać pliki konfiguracji, użyj jednej z Save metod. Użytkownik lub proces zapisu musi mieć następujące uprawnienia:
Uprawnienie do zapisu w pliku konfiguracji i katalogu na bieżącym poziomie hierarchii konfiguracji.
Uprawnienia do odczytu dla wszystkich plików konfiguracji.
Właściwości
AppSettings |
AppSettingsSection Pobiera dane domyślnej konfiguracji bieżącej aplikacji. |
ConnectionStrings |
ConnectionStringsSection Pobiera dane domyślnej konfiguracji bieżącej aplikacji. |
Metody
GetSection(String) |
Pobiera określoną sekcję konfiguracji dla domyślnej konfiguracji bieżącej aplikacji. |
OpenExeConfiguration(ConfigurationUserLevel) |
Otwiera plik konfiguracji bieżącej aplikacji jako Configuration obiekt. |
OpenExeConfiguration(String) |
Otwiera określony plik konfiguracji klienta jako Configuration obiekt. |
OpenMachineConfiguration() |
Otwiera plik konfiguracji maszyny na bieżącym komputerze jako Configuration obiekt. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
Otwiera określony plik konfiguracji klienta jako Configuration obiekt, który używa określonego mapowania plików i poziomu użytkownika. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) |
Otwiera określony plik konfiguracji klienta jako Configuration obiekt, który używa określonego mapowania plików, poziomu użytkownika i wstępnego ładowania. |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
Otwiera plik konfiguracji maszyny jako Configuration obiekt, który używa określonego mapowania plików. |
RefreshSection(String) |
Odświeża nazwaną sekcję, aby następnym razem, gdy zostanie pobrany, zostanie on ponownie odczytany z dysku. |