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. 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 aconnectionStrings
, 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. |