Partager via


ConfigurationManager Classe

Définition

Fournit l’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 suivant montre comment utiliser une chaîne de connexion pour lire des données à partir 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

Remarques

La classe ConfigurationManager vous permet d’accéder aux informations de configuration de l’ordinateur, de l’application et de l’utilisateur. Cette classe remplace la classe ConfigurationSettings, qui est déconseillée. Pour les applications web, utilisez la classe WebConfigurationManager.

Pour utiliser la classe ConfigurationManager, votre projet doit référencer l’assembly System.Configuration. Par défaut, certains modèles de projet, comme l’application console, ne référencent pas cet assembly. Vous devez donc le référencer manuellement.

Note

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 des applications à l’aide de Fichiers de configuration.

Vous pouvez utiliser les types System.Configuration intégrés ou les dériver pour gérer les informations de configuration. En utilisant ces types, vous pouvez travailler directement avec les informations de configuration et étendre les fichiers de configuration pour inclure des informations personnalisées.

La classe ConfigurationManager inclut 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 méthode GetSection. Pour certaines sections telles que appSettings et connectionStrings, utilisez les classes AppSettings et ConnectionStrings. Ces membres effectuent des opérations en lecture seule, utilisent une seule instance mise en cache de la configuration et sont conscients de la multithread.

  • Lire et écrire des fichiers de configuration dans son ensemble. Votre application peut lire et écrire des paramètres de configuration à n’importe quel niveau, pour lui-même ou pour d’autres applications ou ordinateurs, localement ou à distance. Utilisez l’une des méthodes fournies par la classe ConfigurationManager pour ouvrir un fichier de configuration tel que SampleApp.exe.config. Ces méthodes retournent un objet Configuration qui expose à son tour des méthodes et des propriétés que vous pouvez utiliser pour travailler avec 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.

  • Prendre en charge les tâches de configuration. Les types suivants sont utilisés pour prendre en charge différentes tâches de configuration :

    Outre l’utilisation des 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 classes ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertyet ConfigurationSection. Pour obtenir un exemple d’extension d’un type de configuration intégré par programmation, 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 classe Configuration permet l’accès par programmation pour la modification des fichiers de configuration. Vous utilisez l’une des méthodes Open fournies par ConfigurationManager. Ces méthodes retournent un objet Configuration, qui fournit à son tour les méthodes et propriétés requises 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 :

  • l’autorisation Lecture sur le fichier de configuration au niveau de la hiérarchie de configuration actuelle.

  • Lire les autorisations sur tous les fichiers de configuration parent.

Si votre application a besoin d’un accès en lecture seule à sa propre configuration, nous vous recommandons d’utiliser la méthode GetSection(String). Cette méthode permet d’accéder aux valeurs de configuration mises en cache pour l’application actuelle, ce qui offre de meilleures performances que la classe Configuration.

Pour écrire dans les fichiers de configuration, utilisez l’une des méthodes Save. 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.

  • Lire les autorisations 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 en tant qu’objet Configuration.

OpenExeConfiguration(String)

Ouvre le fichier de configuration client spécifié en tant qu’objet Configuration.

OpenMachineConfiguration()

Ouvre le fichier de configuration de l’ordinateur sur l’ordinateur actuel en tant qu’objet Configuration.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Ouvre le fichier de configuration client spécifié en tant qu’objet Configuration qui utilise le mappage de fichiers, le niveau utilisateur et l’option de préchargement spécifiés.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Ouvre le fichier de configuration client spécifié en tant qu’objet Configuration qui utilise le mappage de fichiers et le niveau utilisateur spécifiés.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Ouvre le fichier de configuration de l’ordinateur en tant qu’objet Configuration qui utilise le mappage de fichiers spécifié.

RefreshSection(String)

Actualise la section nommée afin que la prochaine fois qu’elle soit récupérée, elle sera recréée à partir du disque.

S’applique à

Voir aussi