ConfigurationManager Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
aconnectionStrings
, 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. |