ConfigurationManager Classe

Définition

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 et connectionStrings, 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.

S’applique à

Voir aussi