ConfigurationManager Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit un accès aux fichiers de configuration pour les applications clientes. Cette classe ne peut pas être héritée.
public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
- Héritage
-
ConfigurationManager
Exemples
Le premier exemple montre une application console simple qui lit les paramètres de l’application, ajoute un nouveau paramètre et met à jour un paramètre existant.
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
L’exemple précédent suppose que votre projet a un fichier App.config comme indiqué ci-dessous.
<?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>
L’exemple suivant montre comment utiliser une chaîne de connexion pour lire les données d’une base de données.
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
L’exemple précédent suppose que votre projet a une App.config comme indiqué ci-dessous.
<?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>
Remarques
La ConfigurationManager classe vous permet d’accéder aux informations de configuration de l’ordinateur, de l’application et de l’utilisateur. Cette classe remplace la ConfigurationSettings classe, qui est déconseillée. Pour les applications web, utilisez la WebConfigurationManager classe .
Pour utiliser la ConfigurationManager classe, votre projet doit référencer l’assembly System.Configuration
. Par défaut, certains modèles de projet, comme application console, ne référencent pas cet assembly. Vous devez donc le référencer manuellement.
Notes
Le nom et l’emplacement du fichier de configuration de l’application dépendent de l’hôte de l’application. Pour plus d’informations, consultez Configuration d’applications à l’aide de fichiers de configuration.
Vous pouvez utiliser les types intégrés System.Configuration ou en dériver pour gérer les informations de configuration. En utilisant ces types, vous pouvez utiliser directement les informations de configuration et vous pouvez étendre les fichiers de configuration pour inclure des informations personnalisées.
La ConfigurationManager classe comprend des membres qui vous permettent d’effectuer les tâches suivantes :
Lisez une section à partir d’un fichier de configuration. Pour accéder aux informations de configuration, appelez la GetSection méthode . Pour certaines sections telles que
appSettings
etconnectionStrings
, utilisez les AppSettings classes et ConnectionStrings . Ces membres effectuent des opérations en lecture seule, utilisent une seule instance mise en cache de la configuration et sont compatibles avec le multithread.Lire et écrire des fichiers de configuration dans leur ensemble. Votre application peut lire et écrire des paramètres de configuration à n’importe quel niveau, pour elle-même ou pour d’autres applications ou ordinateurs, localement ou à distance. Utilisez l’une des méthodes fournies par la ConfigurationManager classe pour ouvrir un fichier de configuration tel que SampleApp.exe.config. Ces méthodes retournent un Configuration objet qui expose à son tour des méthodes et des propriétés que vous pouvez utiliser pour utiliser les fichiers de configuration associés. Les méthodes effectuent des opérations de lecture ou d’écriture et créent les données de configuration chaque fois qu’un fichier est écrit.
Prise en charge des tâches de configuration. Les types suivants sont utilisés pour prendre en charge différentes tâches de configuration :
En plus d’utiliser les informations de configuration existantes, vous pouvez créer et utiliser des éléments de configuration personnalisés en étendant les types de configuration intégrés tels que les ConfigurationElementclasses , ConfigurationElementCollection, ConfigurationPropertyet ConfigurationSection . Pour obtenir un exemple d’extension d’un type de configuration intégré par programme, consultez ConfigurationSection. Pour obtenir un exemple d’extension d’un type de configuration intégré qui utilise le modèle basé sur des attributs, consultez ConfigurationElement.
Notes pour les héritiers
La Configuration classe active l’accès par programmation pour la modification des fichiers de configuration. Vous utilisez l’une des Open
méthodes fournies par ConfigurationManager. Ces méthodes retournent un Configuration objet, qui fournit à son tour les méthodes et propriétés nécessaires pour gérer les fichiers de configuration sous-jacents. Vous pouvez accéder à ces fichiers pour la lecture ou l’écriture.
Pour lire les fichiers de configuration, utilisez GetSection(String) ou GetSectionGroup(String). L’utilisateur ou le processus qui lit doit disposer des autorisations suivantes :
Autorisation de lecture sur le fichier de configuration au niveau de la hiérarchie de configuration actuelle.
Autorisations de lecture sur tous les fichiers de configuration parents.
Si votre application a besoin d’un accès en lecture seule à sa propre configuration, nous vous recommandons d’utiliser la GetSection(String) méthode . Cette méthode permet d’accéder aux valeurs de configuration mises en cache pour l’application actuelle, qui offre de meilleures performances que la Configuration classe .
Pour écrire dans les fichiers de configuration, utilisez l’une Save des méthodes . L’utilisateur ou le processus qui écrit doit disposer des autorisations suivantes :
Autorisation d’écriture sur le fichier de configuration et le répertoire au niveau de la hiérarchie de configuration actuelle.
Autorisations de lecture sur tous les fichiers de configuration.
Propriétés
AppSettings |
Obtient les données AppSettingsSection pour la configuration par défaut de l’application actuelle. |
ConnectionStrings |
Obtient les données ConnectionStringsSection pour la configuration par défaut de l’application actuelle. |
Méthodes
GetSection(String) |
Récupère une section de configuration spécifiée pour la configuration par défaut de l'application actuelle. |
OpenExeConfiguration(ConfigurationUserLevel) |
Ouvre le fichier de configuration de l’application actuelle sous forme d’objet Configuration. |
OpenExeConfiguration(String) |
Ouvre le fichier de configuration client spécifié en tant qu’objet Configuration. |
OpenMachineConfiguration() |
Ouvre le fichier de configuration d’ordinateur sur l’ordinateur actuel en tant qu’objet Configuration. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
Ouvre le fichier de configuration client spécifié en tant qu’objet Configuration qui utilise le mappage de fichier et le niveau utilisateur spécifiés. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) |
Ouvre le fichier de configuration client spécifié en tant qu'objet Configuration utilisant le mappage de fichiers, l'option de préchargement et le niveau d'utilisateur spécifiés. |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
Ouvre le fichier de configuration machine en tant qu’objet Configuration utilisant le mappage de fichiers spécifié. |
RefreshSection(String) |
Actualise la section nommée de sorte qu'elle soit relue à partir du disque lors de sa prochaine récupération. |