Chaînes de connexion et fichiers de configurationConnection Strings and Configuration Files

L'incorporation de chaînes de connexion dans le code de votre application peut entraîner des vulnérabilités de sécurité et des problèmes de maintenance.Embedding connection strings in your application's code can lead to security vulnerabilities and maintenance problems. Les chaînes de connexion non chiffrées compilées dans le code source d’une application peuvent être affichées à l’aide de l’outil Ildasm.exe (IL Disassembler).Unencrypted connection strings compiled into an application's source code can be viewed using the Ildasm.exe (IL Disassembler) tool. En outre, si la chaîne de connexion change, votre application doit être recompilée.Moreover, if the connection string ever changes, your application must be recompiled. Pour ces raisons, nous vous recommandons de stocker les chaînes de connexion dans un fichier de configuration de l'application.For these reasons, we recommend storing connection strings in an application configuration file.

Utilisation de fichiers de configuration de l'applicationWorking with Application Configuration Files

Les fichiers de configuration de l'application contiennent des paramètres spécifiques à une application particulière.Application configuration files contain settings that are specific to a particular application. Par exemple, une application ASP.NET peut avoir un ou plusieurs fichiers web.config, alors qu’une application Windows peut avoir un fichier app.config facultatif.For example, an ASP.NET application can have one or more web.config files, and a Windows application can have an optional app.config file. Les fichiers de configuration partagent des éléments communs, bien que le nom et l'emplacement d'un fichier de configuration varient selon l'hôte de l'application.Configuration files share common elements, although the name and location of a configuration file vary depending on the application's host.

Section connectionStringsThe connectionStrings Section

Les chaînes de connexion peuvent être stockées en tant que paires clé-valeur dans la section connectionStrings de l’élément configuration d’un fichier de configuration de l’application.Connection strings can be stored as key/value pairs in the connectionStrings section of the configuration element of an application configuration file. Les éléments enfants incluent add, clear et remove.Child elements include add, clear, and remove.

Le fragment de fichier de configuration ci-dessous illustre le schéma et la syntaxe utilisés stocker une chaîne de connexion.The following configuration file fragment demonstrates the schema and syntax for storing a connection string. L’attribut name est un nom que vous fournissez pour identifier de façon unique une chaîne de connexion afin qu’elle puisse être extraite au moment de l’exécution.The name attribute is a name that you provide to uniquely identify a connection string so that it can be retrieved at run time. providerName correspond au nom invariant du fournisseur de données .NET Framework qui figure dans le fichier machine.config.The providerName is the invariant name of the .NET Framework data provider, which is registered in the machine.config file.

<?xml version='1.0' encoding='utf-8'?>  
  <configuration>  
    <connectionStrings>  
      <clear />  
      <add name="Name"   
       providerName="System.Data.ProviderName"   
       connectionString="Valid Connection String;" />  
    </connectionStrings>  
  </configuration>  

Notes

Vous pouvez enregistrer une partie d'une chaîne de connexion dans un fichier de configuration et utiliser la classe DbConnectionStringBuilder pour la compléter au moment de l'exécution.You can save part of a connection string in a configuration file and use the DbConnectionStringBuilder class to complete it at run time. Cela est utile dans des scénarios où vous ne connaissez pas à l'avance les éléments de la chaîne de connexion ou lorsque vous ne voulez pas enregistrer des informations sensibles dans un fichier de configuration.This is useful in scenarios where you do not know elements of the connection string ahead of time, or when you do not want to save sensitive information in a configuration file. Pour plus d’informations, consultez Builders de chaînes de connexion.For more information, see Connection String Builders.

Utilisation de fichiers de configuration externesUsing External Configuration Files

Les fichiers de configuration externes sont des fichiers distincts qui contiennent un fragment d'un fichier de configuration composé d'une section unique.External configuration files are separate files that contain a fragment of a configuration file consisting of a single section. Le fichier de configuration externe est ensuite référencé par le fichier de configuration principal.The external configuration file is then referenced by the main configuration file. Le stockage de la section connectionStrings dans un fichier physique distinct est utile dans des situations où les chaînes de connexion peuvent être modifiées après le déploiement de l’application.Storing the connectionStrings section in a physically separate file is useful in situations where connection strings may be edited after the application is deployed. Par exemple, le comportement ASP.NET standard consiste à redémarrer un domaine d'application lorsque les fichiers de configuration sont modifiés, ce qui entraîne la perte des informations d'état.For example, the standard ASP.NET behavior is to restart an application domain when configuration files are modified, which results in state information being lost. Toutefois, la modification d'un fichier de configuration externe n'entraîne pas le redémarrage d'une application.However, modifying an external configuration file does not cause an application restart. Les fichiers de configuration externes ne sont pas limités à ASP.NET ; ils peuvent également être utilisés par des applications Windows.External configuration files are not limited to ASP.NET; they can also be used by Windows applications. En outre, la sécurité et les autorisations d'accès aux fichiers permettent de limiter l'accès aux fichiers de configuration externes.In addition, file access security and permissions can be used to restrict access to external configuration files. L'utilisation de fichiers de configuration externes au moment de l'exécution est transparente et ne requiert aucun codage spécial.Working with external configuration files at run time is transparent, and requires no special coding.

Pour stocker des chaînes de connexion dans un fichier de configuration externe, créez un fichier distinct contenant seulement la section connectionStrings.To store connection strings in an external configuration file, create a separate file that contains only the connectionStrings section. N'incluez aucun élément, section ou attribut supplémentaire.Do not include any additional elements, sections, or attributes. L'exemple ci-dessous illustre la syntaxe pour un fichier de configuration externe.This example shows the syntax for an external configuration file.

<connectionStrings>  
  <add name="Name"   
   providerName="System.Data.ProviderName"   
   connectionString="Valid Connection String;" />  
</connectionStrings>  

Dans le fichier de configuration principal de l’application, vous utilisez l’attribut configSource pour spécifier le nom complet et l’emplacement du fichier externe.In the main application configuration file, you use the configSource attribute to specify the fully qualified name and location of the external file. Cet exemple fait référence à un fichier de configuration externe nommé connections.config.This example refers to an external configuration file named connections.config.

<?xml version='1.0' encoding='utf-8'?>  
<configuration>  
    <connectionStrings configSource="connections.config"/>  
</configuration>  

Extraction de chaînes de connexion au moment de l'exécutionRetrieving Connection Strings at Run Time

Le .NET Framework 2.0 a introduit de nouvelles classes dans l'espace de noms System.Configuration afin de simplifier l'extraction des chaînes de connexion à partir des fichiers de configuration au moment de l'exécution.The .NET Framework 2.0 introduced new classes in the System.Configuration namespace to simplify retrieving connection strings from configuration files at run time. Vous pouvez extraire par programme une chaîne de connexion en utilisant son nom ou le nom du fournisseur.You can programmatically retrieve a connection string by name or by provider name.

Notes

Le fichier machine.config contient également une section connectionStrings, qui contient les chaînes de connexion utilisées par Visual Studio.The machine.config file also contains a connectionStrings section, which contains connection strings used by Visual Studio. Lors de l’extraction de chaînes de connexion à l’aide du nom du fournisseur à partir du fichier app.config dans une application Windows, les chaînes de connexion figurant dans machine.config sont chargées les premières, avant les entrées figurant dans app.config. L’ajout de clear immédiatement après l’élément connectionStrings supprime toutes les références héritées de la structure de données en mémoire, de sorte que seules les chaînes de connexion définies dans le fichier app.config local sont prises en compte.When retrieving connection strings by provider name from the app.config file in a Windows application, the connection strings in machine.config get loaded first, and then the entries from app.config. Adding clear immediately after the connectionStrings element removes all inherited references from the data structure in memory, so that only the connection strings defined in the local app.config file are considered.

Utilisation des classes de configurationWorking with the Configuration Classes

À partir du .NET Framework 2.0, ConfigurationManagerest utilisé lors de l'utilisation de fichiers de configuration sur l'ordinateur local, pour remplacer la ConfigurationSettings déconseillée.Starting with the .NET Framework 2.0, ConfigurationManager is used when working with configuration files on the local computer, replacing the deprecated ConfigurationSettings. WebConfigurationManager permet d'utiliser des fichiers de configuration ASP.NET.WebConfigurationManager is used to work with ASP.NET configuration files. Il est conçu pour fonctionner avec les fichiers de configuration sur un serveur web et il permet un accès par programmation à des sections des fichiers de configuration telles que system.web.It is designed to work with configuration files on a Web server, and allows programmatic access to configuration file sections such as system.web.

Notes

L'accès aux fichiers de configuration au moment de l'exécution exige d'accorder des autorisations à l'appelant ; les autorisations requises dépendent du type d'application, du fichier de configuration et de l'emplacement.Accessing configuration files at run time requires granting permissions to the caller; the required permissions depend on the type of application, configuration file, and location. Pour plus d’informations, consultez Utilisation des classes de configuration et WebConfigurationManager pour les applications ASP.NET, et ConfigurationManager pour les applications Windows.For more information, see Using the Configuration Classes and WebConfigurationManager for ASP.NET applications, and ConfigurationManager for Windows applications.

Vous pouvez utiliser ConnectionStringSettingsCollection pour extraire les chaînes de connexion à partir des fichiers de configuration de l'application.You can use the ConnectionStringSettingsCollection to retrieve connection strings from application configuration files. Il contient une collection d’objets ConnectionStringSettings, dont chacun représente une entrée unique dans la section connectionStrings.It contains a collection of ConnectionStringSettings objects, each of which represents a single entry in the connectionStrings section. Ses propriétés correspondent aux attributs des chaînes de connexion, ce qui vous permet d'extraire une chaîne de connexion en spécifiant son nom ou le nom du fournisseur.Its properties map to connection string attributes, allowing you to retrieve a connection string by specifying the name or the provider name.

PropriétéProperty DescriptionDescription
Name Nom de la chaîne de connexion.The name of the connection string. Correspond à l’attribut name.Maps to the name attribute.
ProviderName Nom complet du fournisseur.The fully qualified provider name. Correspond à l’attribut providerName.Maps to the providerName attribute.
ConnectionString Chaîne de connexionThe connection string. Correspond à l’attribut connectionString.Maps to the connectionString attribute.

Exemple : Liste de toutes les chaînes de connexionExample: Listing All Connection Strings

Cet exemple effectue une itération dans le ConnectionStringSettingsCollection et affiche le ConnectionStringSettings.Name, ConnectionStringSettings.ProviderName, et ConnectionStringSettings.ConnectionString propriétés dans la fenêtre de console.This example iterates through the ConnectionStringSettingsCollection and displays the ConnectionStringSettings.Name, ConnectionStringSettings.ProviderName, and ConnectionStringSettings.ConnectionString properties in the console window.

Notes

Le fichier System.Configuration.dll n'est pas inclus dans tous les types de projets et vous pouvez être amené à définir une référence à ce fichier afin d'utiliser les classes de configuration.System.Configuration.dll is not included in all project types, and you may need to set a reference to it in order to use the configuration classes. Le nom et l'emplacement d'un fichier de configuration particulier de l'application varient selon le type d'application et le processus d'hébergement.The name and location of a particular application configuration file varies by the type of application and the hosting process.

using System.Configuration;

class Program
{
    static void Main()
    {
        GetConnectionStrings();
        Console.ReadLine();
    }

    static void GetConnectionStrings()
    {
        ConnectionStringSettingsCollection settings =
            ConfigurationManager.ConnectionStrings;

        if (settings != null)
        {
            foreach(ConnectionStringSettings cs in settings)
            {
                Console.WriteLine(cs.Name);
                Console.WriteLine(cs.ProviderName);
                Console.WriteLine(cs.ConnectionString);
            }
        }
    }
}
Imports System.Configuration

Class Program
    Shared Sub Main()
        GetConnectionStrings()
        Console.ReadLine()
    End Sub

    Private Shared Sub GetConnectionStrings()

        Dim settings As ConnectionStringSettingsCollection = _
            ConfigurationManager.ConnectionStrings

        If Not settings Is Nothing Then
            For Each cs As ConnectionStringSettings In settings
                Console.WriteLine(cs.Name)
                Console.WriteLine(cs.ProviderName)
                Console.WriteLine(cs.ConnectionString)
            Next
        End If
    End Sub
End Class

Exemple : Extraction d’une chaîne de connexion par nomExample: Retrieving a Connection String by Name

Cet exemple montre comment extraire une chaîne de connexion à partir d'un fichier de configuration en spécifiant son nom.This example demonstrates how to retrieve a connection string from a configuration file by specifying its name. Le code crée un objet ConnectionStringSettings, en faisant correspondre le paramètre d'entrée fourni au nom ConnectionStrings.The code creates a ConnectionStringSettings object, matching the supplied input parameter to the ConnectionStrings name. Si aucun nom correspondant n'est trouvé, la fonction retourne null (Nothing en Visual Basic).If no matching name is found, the function returns null (Nothing in Visual Basic).

// Retrieves a connection string by name.
// Returns null if the name is not found.
static string GetConnectionStringByName(string name)
{
    // Assume failure.
    string returnValue = null;

    // Look for the name in the connectionStrings section.
    ConnectionStringSettings settings =
        ConfigurationManager.ConnectionStrings[name];

    // If found, return the connection string.
    if (settings != null)
        returnValue = settings.ConnectionString;

    return returnValue;
}
' Retrieves a connection string by name.
' Returns Nothing if the name is not found.
Private Shared Function GetConnectionStringByName( _
    ByVal name As String) As String

    ' Assume failure
    Dim returnValue As String = Nothing

    ' Look for the name in the connectionStrings section.
    Dim settings As ConnectionStringSettings = _
       ConfigurationManager.ConnectionStrings(name)

    ' If found, return the connection string.
    If Not settings Is Nothing Then
        returnValue = settings.ConnectionString
    End If

    Return returnValue
End Function

Exemple : Récupération d'une chaîne de connexion à l'aide du nom du fournisseurExample: Retrieving a Connection String by Provider Name

Cet exemple montre comment extraire une chaîne de connexion en spécifiant le nom invariant du fournisseur au format System.Data.ProviderName.This example demonstrates how to retrieve a connection string by specifying the provider-invariant name in the format System.Data.ProviderName. Le code itère au sein de ConnectionStringSettingsCollection et retourne la chaîne de connexion du premier ProviderName trouvé.The code iterates through the ConnectionStringSettingsCollection and returns the connection string for the first ProviderName found. Si le nom du fournisseur est introuvable, la fonction retourne null (Nothing en Visual Basic).If the provider name is not found, the function returns null (Nothing in Visual Basic).

// Retrieve a connection string by specifying the providerName.
// Assumes one connection string per provider in the config file.
static string GetConnectionStringByProvider(string providerName)
{
    // Return null on failure.
    string returnValue = null;

    // Get the collection of connection strings.
    ConnectionStringSettingsCollection settings =
        ConfigurationManager.ConnectionStrings;

    // Walk through the collection and return the first 
    // connection string matching the providerName.
    if (settings != null)
    {
        foreach (ConnectionStringSettings cs in settings)
        {
            if (cs.ProviderName == providerName)
                returnValue = cs.ConnectionString;
            break;
        }
    }
    return returnValue;
}
' Retrieve a connection string by specifying the providerName.
' Assumes one connection string per provider in the config file.
Private Shared Function GetConnectionStringByProvider( _
    ByVal providerName As String) As String

    'Return Nothing on failure.
    Dim returnValue As String = Nothing

    ' Get the collection of connection strings.
    Dim settings As ConnectionStringSettingsCollection = _
        ConfigurationManager.ConnectionStrings

    ' Walk through the collection and return the first 
    ' connection string matching the providerName.
    If Not settings Is Nothing Then
        For Each cs As ConnectionStringSettings In settings
            If cs.ProviderName = providerName Then
                returnValue = cs.ConnectionString
                Exit For
            End If
        Next
    End If

    Return returnValue
End Function

Chiffrement de sections de fichier de configuration à l'aide d'une configuration protégéeEncrypting Configuration File Sections Using Protected Configuration

ASP.NET 2.0 a introduit une nouvelle fonctionnalité, appelée configuration protégée, qui vous permet de chiffrer les informations sensibles dans un fichier de configuration.ASP.NET 2.0 introduced a new feature, called protected configuration, that enables you to encrypt sensitive information in a configuration file. Bien qu'elle ait été conçu à l'origine pour les applications ASP.NET, la configuration protégée peut également servir à chiffrer les sections des fichiers de configuration dans les applications Windows.Although primarily designed for ASP.NET, protected configuration can also be used to encrypt configuration file sections in Windows applications. Pour une description détaillée des fonctionnalités de configuration protégée, consultez Chiffrement des informations de configuration à l’aide de la configuration protégée.For a detailed description of the protected configuration capabilities, see Encrypting Configuration Information Using Protected Configuration.

Le fragment de fichier de configuration suivant illustre la section connectionStrings après le chiffrement.The following configuration file fragment shows the connectionStrings section after it has been encrypted. Le configProtectionProvider spécifie le fournisseur de configuration protégée pour chiffrer et déchiffrer les chaînes de connexion.The configProtectionProvider specifies the protected configuration provider used to encrypt and decrypt the connection strings. La section EncryptedData contient le texte de chiffrement.The EncryptedData section contains the cipher text.

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">  
  <EncryptedData>  
    <CipherData>  
      <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>  
    </CipherData>  
  </EncryptedData>  
</connectionStrings>  

Quand la chaîne de connexion chiffrée est extraite au moment de l’exécution, le .NET Framework utilise le fournisseur spécifié pour déchiffrer CipherValue et le tenir à la disposition de votre application.When the encrypted connection string is retrieved at run time, the .NET Framework uses the specified provider to decrypt the CipherValue and make it available to your application. Il est inutile d'écrire du code supplémentaire pour gérer le processus de déchiffrement.You do not need to write any additional code to manage the decryption process.

Fournisseurs de configuration protégéeProtected Configuration Providers

Les fournisseurs de configuration protégée sont enregistrés dans la section configProtectedData du fichier machine.config sur l’ordinateur local, comme indiqué dans le fragment suivant, qui représente les deux fournisseurs de configuration protégée inclus avec le .NET Framework.Protected configuration providers are registered in the configProtectedData section of the machine.config file on the local computer, as shown in the following fragment, which shows the two protected configuration providers supplied with the .NET Framework. Les valeurs indiquées ici ont été tronquées pour améliorer la lisibilité.The values shown here have been truncated for readability.

<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">  
  <providers>  
    <add name="RsaProtectedConfigurationProvider"   
      type="System.Configuration.RsaProtectedConfigurationProvider, ... />  
    <add name="DataProtectionConfigurationProvider"   
      type="System.Configuration.DpapiProtectedConfigurationProvider, ... />  
  </providers>  
</configProtectedData>  

Vous pouvez configurer des fournisseurs de configuration protégée supplémentaires en les ajoutant au fichier machine.config. Vous pouvez également créer votre propre fournisseur de configuration protégée en héritant de la classe de base abstraite ProtectedConfigurationProvider. Le tableau suivant décrit les deux fichiers de configuration inclus avec le .NET Framework.The following table describes the two configuration files included with the .NET Framework.

FournisseurProvider DescriptionDescription
RsaProtectedConfigurationProvider Utilise l'algorithme de chiffrement RSA pour chiffrer et déchiffrer des données.Uses the RSA encryption algorithm to encrypt and decrypt data. L'algorithme RSA peut être utilisé pour le chiffrement de clé publique et les signatures numériques.The RSA algorithm can be used for both public key encryption and digital signatures. Il est également appelé « clé publique » ou chiffrement asymétrique, car il utilise deux clés différentes.It is also known as "public key" or asymmetrical encryption because it employs two different keys. Vous pouvez utiliser l’Outil d’inscription IIS ASP.NET (aspnet_regiis.exe) pour chiffrer des sections dans un fichier Web.config et gérer les clés de chiffrement.You can use the ASP.NET IIS Registration Tool (Aspnet_regiis.exe) to encrypt sections in a Web.config file and manage the encryption keys. ASP.NET déchiffre le fichier de configuration lorsqu'il traite le fichier.ASP.NET decrypts the configuration file when it processes the file. L'identité de l'application ASP.NET doit disposer d'un accès à la clé de chiffrement utilisée pour chiffrer et déchiffrer les sections chiffrées.The identity of the ASP.NET application must have read access to the encryption key that is used to encrypt and decrypt the encrypted sections.
DpapiProtectedConfigurationProvider Utilise l'API de protection de données (DPAPI) Windows pour chiffrer les sections de configuration.Uses the Windows Data Protection API (DPAPI) to encrypt configuration sections. Il utilise les services de chiffrement intégrés de Windows et peut être configuré pour une protection spécifique à un ordinateur ou spécifique à un compte d'utilisateur.It uses the Windows built-in cryptographic services and can be configured for either machine-specific or user-account-specific protection. La protection spécifique à un ordinateur est utile pour plusieurs applications sur le même serveur qui doivent partager des informations.Machine-specific protection is useful for multiple applications on the same server that need to share information. La protection spécifique à un compte d'utilisateur peut être utilisée avec des services qui s'exécutent avec une identité d'utilisateur spécifique, telle qu'un environnement d'hébergement partagé.User-account-specific protection can be used with services that run with a specific user identity, such as a shared hosting environment. Chaque application s'exécute sous une identité différente qui restreint l'accès aux ressources telles que les fichiers et les bases de données.Each application runs under a separate identity which restricts access to resources such as files and databases.

Les deux fournisseurs offrent un chiffrement renforcé des données.Both providers offer strong encryption of data. Cependant, si vous prévoyez d'utiliser le même fichier de configuration chiffré sur plusieurs serveurs, comme une batterie de serveurs Web, seul RsaProtectedConfigurationProvider vous permet d'exporter les clefs de chiffrement utilisées pour chiffrer les données et les importer sur un autre serveur.However, if you are planning to use the same encrypted configuration file on multiple servers, such as a Web farm, only the RsaProtectedConfigurationProvider enables you to export the encryption keys used to encrypt the data and import them on another server. Pour plus d’informations, consultez Importation et exportation des conteneurs de clé RSA de la configuration protégée.For more information, see Importing and Exporting Protected Configuration RSA Key Containers.

Utilisation des classes de configurationUsing the Configuration Classes

L'espace de noms System.Configuration fournit des classes pour utiliser des paramètres de configuration par programme.The System.Configuration namespace provides classes to work with configuration settings programmatically. La classe ConfigurationManager fournit un accès aux fichiers de configuration d'ordinateur, d'application et d'utilisateur.The ConfigurationManager class provides access to machine, application, and user configuration files. Si vous créez une application ASP.NET, vous pouvez utiliser la classe WebConfigurationManager, qui fournit la même fonctionnalité tout en vous permettant également d’accéder à des paramètres qui sont uniques aux applications ASP.NET, comme celles qui se trouvent dans <system.web>.If you are creating an ASP.NET application, you can use the WebConfigurationManager class, which provides the same functionality while also allowing you to access settings that are unique to ASP.NET applications, such as those found in <system.web>.

Notes

L'espace de noms System.Security.Cryptography contient des classes qui fournissent des options supplémentaires pour le chiffrement et déchiffrement de données.The System.Security.Cryptography namespace contains classes that provide additional options for encrypting and decrypting data. Utilisez ces classes si vous avez besoin de services de chiffrement qui ne sont pas disponibles via la configuration protégée.Use these classes if you require cryptographic services that are not available using protected configuration. Certaines de ces classes sont des wrappers pour l'interface Microsoft CryptoAPI non managée, tandis que d'autres ne sont purement que des implémentations managées.Some of these classes are wrappers for the unmanaged Microsoft CryptoAPI, while others are purely managed implementations. Pour plus d’informations, consultez Services de cryptographie.For more information, see Cryptographic Services.

Exemple App.configApp.config Example

Cet exemple montre comment basculer le chiffrement de la section connectionStrings dans un fichier app.config pour une application Windows.This example demonstrates how to toggle encrypting the connectionStrings section in an app.config file for a Windows application. Dans cet exemple, la procédure prend le nom de l'application en tant qu'argument, par exemple, « MyApplication.exe ».In this example, the procedure takes the name of the application as an argument, for example, "MyApplication.exe". Le fichier app.config est ensuite chiffré et copié dans le dossier qui contient le fichier exécutable sous le nom « MyApplication.exe.config ».The app.config file will then be encrypted and copied to the folder that contains the executable under the name of "MyApplication.exe.config".

Notes

La chaîne de connexion peut uniquement être déchiffrée sur l'ordinateur sur lequel elle a été chiffrée.The connection string can only be decrypted on the computer on which it was encrypted.

Le code utilise la méthode OpenExeConfiguration pour ouvrir le fichier app.config à des fins de modification, puis la méthode GetSection retourne la section connectionStrings.The code uses the OpenExeConfiguration method to open the app.config file for editing, and the GetSection method returns the connectionStrings section. Le code vérifie ensuite la propriété IsProtected, en appelant le ProtectSection pour chiffrer la section si elle n'est pas chiffrée.The code then checks the IsProtected property, calling the ProtectSection to encrypt the section if it is not encrypted. La méthode UnprotectSection est appelée pour déchiffrer la section.The UnprotectSection method is invoked to decrypt the section. La méthode Save termine l'opération et enregistre les modifications.The Save method completes the operation and saves the changes.

Notes

Vous devez définir une référence à System.Configuration.dll dans votre projet pour le code à exécuter.You must set a reference to System.Configuration.dll in your project for the code to run.

static void ToggleConfigEncryption(string exeConfigName)
{
    // Takes the executable file name without the
    // .config extension.
    try
    {
        // Open the configuration file and retrieve 
        // the connectionStrings section.
        Configuration config = ConfigurationManager.
            OpenExeConfiguration(exeConfigName);

        ConnectionStringsSection section =
            config.GetSection("connectionStrings")
            as ConnectionStringsSection;

        if (section.SectionInformation.IsProtected)
        {
            // Remove encryption.
            section.SectionInformation.UnprotectSection();
        }
        else
        {
            // Encrypt the section.
            section.SectionInformation.ProtectSection(
                "DataProtectionConfigurationProvider");
        }
        // Save the current configuration.
        config.Save();

        Console.WriteLine("Protected={0}",
            section.SectionInformation.IsProtected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
Shared Sub ToggleConfigEncryption(ByVal exeConfigName As String)
    ' Takes the executable file name without the
    ' .config extension.
    Try
        ' Open the configuration file and retrieve 
        ' the connectionStrings section.
        Dim config As Configuration = ConfigurationManager. _
            OpenExeConfiguration(exeConfigName)

        Dim section As ConnectionStringsSection = DirectCast( _
            config.GetSection("connectionStrings"), _
            ConnectionStringsSection)

        If section.SectionInformation.IsProtected Then
            ' Remove encryption.
            section.SectionInformation.UnprotectSection()
        Else
            ' Encrypt the section.
            section.SectionInformation.ProtectSection( _
              "DataProtectionConfigurationProvider")
        End If

        ' Save the current configuration.
        config.Save()

        Console.WriteLine("Protected={0}", _
        section.SectionInformation.IsProtected)

    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Sub

Exemple Web.configWeb.config Example

Cet exemple utilise la méthode OpenWebConfiguration de WebConfigurationManager.This example uses the OpenWebConfiguration method of the WebConfigurationManager. Notez que dans ce cas vous pouvez fournir le chemin relatif au fichier Web.config à l’aide d’un tilde.Note that in this case you can supply the relative path to the Web.config file by using a tilde. Le code requiert une référence à la classe System.Web.Configuration.The code requires a reference to the System.Web.Configuration class.

static void ToggleWebEncrypt()
{
    // Open the Web.config file.
    Configuration config = WebConfigurationManager.
        OpenWebConfiguration("~");

    // Get the connectionStrings section.
    ConnectionStringsSection section =
        config.GetSection("connectionStrings")
        as ConnectionStringsSection;

    // Toggle encryption.
    if (section.SectionInformation.IsProtected)
    {
        section.SectionInformation.UnprotectSection();
    }
    else
    {
        section.SectionInformation.ProtectSection(
            "DataProtectionConfigurationProvider");
    }

    // Save changes to the Web.config file.
    config.Save();
}
Shared Sub ToggleWebEncrypt()
    ' Open the Web.config file.
    Dim config As Configuration = WebConfigurationManager. _
      OpenWebConfiguration("~")

    ' Get the connectionStrings section.
    Dim section As ConnectionStringsSection = DirectCast( _
        config.GetSection("connectionStrings"), _
        ConnectionStringsSection)

    ' Toggle encryption.
    If section.SectionInformation.IsProtected Then
        section.SectionInformation.UnprotectSection()
    Else
        section.SectionInformation.ProtectSection( _
          "DataProtectionConfigurationProvider")
    End If

    ' Save changes to the Web.config file.
    config.Save()
End Sub

Pour plus d’informations sur la sécurisation des applications ASP.NET, consultez Securing ASP.NET web sites.For more information about securing ASP.NET applications, see Securing ASP.NET web sites.

Voir aussiSee also