Строки подключения и файлы конфигурацииConnection Strings and Configuration Files

Внедрение строк соединения в код приложения может привести к появлению уязвимых мест в системе безопасности и проблем с обслуживанием.Embedding connection strings in your application's code can lead to security vulnerabilities and maintenance problems. Незашифрованные строки подключения, скомпилированные в исходный код приложения, можно просматривать с помощью средства Ildasm.exe (IL Disassembler).Unencrypted connection strings compiled into an application's source code can be viewed using the Ildasm.exe (IL Disassembler) tool. Кроме того, после изменения строки соединения необходимо перекомпилировать приложение.Moreover, if the connection string ever changes, your application must be recompiled. По этим причинам рекомендуется хранить строки соединения в файле конфигурации приложения.For these reasons, we recommend storing connection strings in an application configuration file.

Работа с файлами конфигурации приложенияWorking with Application Configuration Files

Файлы конфигурации приложения содержат настройки, относящиеся к отдельному приложению.Application configuration files contain settings that are specific to a particular application. Например, приложение ASP.NET может иметь один или несколько файлов web.config, а приложение Windows — дополнительный файл app.config.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. В файлах конфигурации присутствуют общие элементы, хотя имя и расположение любого файла конфигурации в значительной степени зависят от того, где размещается приложение.Configuration files share common elements, although the name and location of a configuration file vary depending on the application's host.

Раздел connectionStringsThe connectionStrings Section

Строки подключения могут храниться в виде пар "ключ/значение" в разделе connectionStrings элемента configuration файла конфигурации приложения.Connection strings can be stored as key/value pairs in the connectionStrings section of the configuration element of an application configuration file. Дочерние элементы включают add, clear и remove.Child elements include add, clear, and remove.

Следующий фрагмент файла конфигурации демонстрирует схему и синтаксис хранения строки соединения.The following configuration file fragment demonstrates the schema and syntax for storing a connection string. Атрибут name является именем, которое задано для уникальной идентификации строки подключения, чтобы ее можно было получить во время выполнения.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 является неизменяемым именем поставщика данных .NET Framework, которое регистрируется в файле 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>  

Примечание

Можно сохранить часть строки соединения в файле конфигурации и для ее дополнения во время выполнения использовать класс DbConnectionStringBuilder.You can save part of a connection string in a configuration file and use the DbConnectionStringBuilder class to complete it at run time. Это удобно в сценариях, в которых заранее неизвестны элементы строки соединения или желательно не сохранять конфиденциальные данные в файле конфигурации.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. Дополнительные сведения см. в статье Connection String Builders (Построители строк подключения).For more information, see Connection String Builders.

Использование внешних файлов конфигурацииUsing External Configuration Files

Внешние файлы конфигурации представляют собой отдельные файлы, каждый из которых содержит фрагмент файла конфигурации, состоящий из одного раздела.External configuration files are separate files that contain a fragment of a configuration file consisting of a single section. В таком случае основной файл конфигурации ссылается на внешний файл конфигурации.The external configuration file is then referenced by the main configuration file. Хранение раздела connectionStrings в физически отдельном файле становится удобным в ситуациях, когда может потребоваться внесение изменений в строки подключения после развертывания приложения.Storing the connectionStrings section in a physically separate file is useful in situations where connection strings may be edited after the application is deployed. Например, в ASP.NET по умолчанию после изменения файлов конфигурации осуществляется перезапуск домена приложения, что приводит к потере сведений о состоянии.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. Но изменение внешнего файла конфигурации не вызывает перезапуск приложения.However, modifying an external configuration file does not cause an application restart. Возможность применения внешних файлов конфигурации не ограничивается ASP.NET; их можно также использовать в приложениях Windows.External configuration files are not limited to ASP.NET; they can also be used by Windows applications. Кроме того, для ограничения доступа к внешним файлам конфигурации могут использоваться средства обеспечения безопасности доступа к файлам и разрешения.In addition, file access security and permissions can be used to restrict access to external configuration files. Работа с внешними файлами конфигурации во время выполнения осуществляется в прозрачном режиме и не требует разработки специального кода.Working with external configuration files at run time is transparent, and requires no special coding.

Для хранения строк подключения во внешнем файле конфигурации создайте отдельный файл, содержащий единственный раздел connectionStrings.To store connection strings in an external configuration file, create a separate file that contains only the connectionStrings section. Не следует включать какие-либо дополнительные элементы, разделы или атрибуты.Do not include any additional elements, sections, or attributes. В данном примере показан синтаксис внешнего файла конфигурации.This example shows the syntax for an external configuration file.

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

В основном файле конфигурации приложения для указания полного имени и расположения внешнего файла используется атрибут configSource.In the main application configuration file, you use the configSource attribute to specify the fully qualified name and location of the external file. В следующем примере применяется ссылка на внешний файл конфигурации с именем 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>  

Получение строк соединения во время выполненияRetrieving Connection Strings at Run Time

В .NET Framework 2.0 в пространстве имен System.Configuration появились новые классы, упрощающие извлечение строк подключения из файлов конфигурации во время выполнения.The .NET Framework 2.0 introduced new classes in the System.Configuration namespace to simplify retrieving connection strings from configuration files at run time. Предусмотрена возможность получить строку соединения программным путем по ее имени или по имени поставщика.You can programmatically retrieve a connection string by name or by provider name.

Примечание

Файл machine.config также содержит раздел connectionStrings, включающий строку подключения, используемую Visual Studio.The machine.config file also contains a connectionStrings section, which contains connection strings used by Visual Studio. При извлечении строк подключения по имени поставщика из файла app.config в приложении Windows сначала загружаются строки подключения в machine.config , а затем записи из app.config. Добавление clear сразу после элемента ConnectionString удаляет все унаследованные ссылки из структуры данных в памяти, поэтому учитываются только строки подключения, определенные в локальном файле app.config .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.

Работа с классами конфигурацииWorking with the Configuration Classes

Начиная с версии .NET Framework 2.0, для работы с файлами конфигурации на локальном компьютере используется класс ConfigurationManager, который заменил устаревший класс ConfigurationSettings.Starting with the .NET Framework 2.0, ConfigurationManager is used when working with configuration files on the local computer, replacing the deprecated ConfigurationSettings. WebConfigurationManager служит для работы с файлами конфигурации ASP.NET.WebConfigurationManager is used to work with ASP.NET configuration files. Он создан для работы с файлами конфигурации веб-сервера и предоставляет программный доступ к разделам файла конфигураций, например 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.

Примечание

Вызывающему объекту для доступа к файлам конфигурации во время выполнения должны быть предоставлены разрешения. Требуемые разрешения зависят от типа приложения, файла конфигурации и расположения.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. Дополнительные сведения см. в разделах Использование классов конфигурации и WebConfigurationManager для приложений ASP.NET и ConfigurationManager для приложений Windows.For more information, see Using the Configuration Classes and WebConfigurationManager for ASP.NET applications, and ConfigurationManager for Windows applications.

Для получения строк соединения из файлов конфигурации приложения используется ConnectionStringSettingsCollection.You can use the ConnectionStringSettingsCollection to retrieve connection strings from application configuration files. Этот объект содержит коллекцию объектов ConnectionStringSettings, каждый из которых представляет одну запись в разделе connectionStrings.It contains a collection of ConnectionStringSettings objects, each of which represents a single entry in the connectionStrings section. Его свойства сопоставляются с атрибутами строк соединения, что позволяет получить строку соединения, указав имя строки или имя поставщика.Its properties map to connection string attributes, allowing you to retrieve a connection string by specifying the name or the provider name.

СвойствоProperty ОписаниеDescription
Name Имя строки соединения.The name of the connection string. Сопоставляется с атрибутом name.Maps to the name attribute.
ProviderName Полное имя поставщика.The fully qualified provider name. Сопоставляется с атрибутом providerName.Maps to the providerName attribute.
ConnectionString Строка подключения.The connection string. Сопоставляется с атрибутом connectionString.Maps to the connectionString attribute.

Пример. Список всех строк соединенияExample: Listing All Connection Strings

В этом примере выполняется итерация по ConnectionStringSettingsCollection и отображаются ConnectionStringSettings.Name свойства, ConnectionStringSettings.ProviderName и ConnectionStringSettings.ConnectionString в окне консоли.This example iterates through the ConnectionStringSettingsCollection and displays the ConnectionStringSettings.Name, ConnectionStringSettings.ProviderName, and ConnectionStringSettings.ConnectionString properties in the console window.

Примечание

Файл System.Configuration.dll не включается в проекты всех типов, поэтому для использования классов конфигурации может потребоваться сформировать на него ссылку.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. Имя и расположение файла конфигурации определенного приложения зависит от типа приложения и процесса размещения.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

Пример. Извлечение строки соединения по имениExample: Retrieving a Connection String by Name

Данный пример демонстрирует способ получения строки соединения из файла конфигурации путем указания ее имени.This example demonstrates how to retrieve a connection string from a configuration file by specifying its name. Код создает объект ConnectionStringSettings, сопоставляя указанный входной параметр с именем ConnectionStrings.The code creates a ConnectionStringSettings object, matching the supplied input parameter to the ConnectionStrings name. Если совпадающее имя не найдено, функция возвращает значение null (Nothing в 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

Пример. Извлечение строки соединения по имени поставщикаExample: Retrieving a Connection String by Provider Name

В этом примере демонстрируется способ получения строки подключения путем указания неизменяемого имени поставщика в формате System.Data.ProviderName.This example demonstrates how to retrieve a connection string by specifying the provider-invariant name in the format System.Data.ProviderName. В коде выполняется итерация по ConnectionStringSettingsCollection и происходит возврат строки соединения для первого найденного ProviderName.The code iterates through the ConnectionStringSettingsCollection and returns the connection string for the first ProviderName found. Если имя поставщика не найдено, функция возвращает значение null (Nothing в 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

Шифрование разделов файлов конфигурации с использованием защищенной конфигурацииEncrypting Configuration File Sections Using Protected Configuration

В ASP.NET 2.0 появилась новая возможность, защищенная конфигурация, с помощью которой можно шифровать в файле конфигурации конфиденциальную информацию.ASP.NET 2.0 introduced a new feature, called protected configuration, that enables you to encrypt sensitive information in a configuration file. Защищенная конфигурация разрабатывалась в первую очередь для ASP.NET, но ее можно также использовать для шифрования разделов файлов конфигурации в приложениях Windows.Although primarily designed for ASP.NET, protected configuration can also be used to encrypt configuration file sections in Windows applications. Подробное описание возможностей защищенной конфигурации см. в разделе Шифрование сведений о конфигурации с помощью функции защищенной конфигурации.For a detailed description of the protected configuration capabilities, see Encrypting Configuration Information Using Protected Configuration.

В приведенном ниже фрагменте файла конфигурации показан раздел connectionStrings после шифрования.The following configuration file fragment shows the connectionStrings section after it has been encrypted. В разделе configProtectionProvider задается поставщик защищенной конфигурации, который используется для шифрования и дешифрования строк подключения.The configProtectionProvider specifies the protected configuration provider used to encrypt and decrypt the connection strings. Раздел EncryptedData содержит зашифрованный текст.The EncryptedData section contains the cipher text.

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

Когда зашифрованная строка подключения извлекается во время выполнения, платформа .NET Framework с помощью указанного поставщика дешифрует значение CipherValue и передает его приложению.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. Нет необходимости создавать дополнительный код для управления процессом дешифрования.You do not need to write any additional code to manage the decryption process.

Поставщики защищенной конфигурацииProtected Configuration Providers

Поставщики защищенной конфигурации регистрируются в разделе configProtectedData файла machine.config на локальном компьютере, как показано в приведенном ниже фрагменте, в котором демонстрируются два поставщика защищенной конфигурации, поставляемые с платформой .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. Показанные значения были усечены для удобства чтения.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>  

Можно назначить дополнительные поставщики защищенной конфигурации, добавляя их в файл machine.config.You can configure additional protected configuration providers by adding them to the machine.config file. Кроме того, можно создать собственный поставщик защищенной конфигурации путем наследования от абстрактного базового класса ProtectedConfigurationProvider.You can also create your own protected configuration provider by inheriting from the ProtectedConfigurationProvider abstract base class. В приведенной ниже таблице дано описание двух файлов конфигурации, входящих в платформу .NET Framework.The following table describes the two configuration files included with the .NET Framework.

ПоставщикProvider ОписаниеDescription
RsaProtectedConfigurationProvider Использует алгоритм RSA для шифрования и расшифровки данных.Uses the RSA encryption algorithm to encrypt and decrypt data. Алгоритм RSA можно использовать для шифрования с открытым ключом и цифровых сигнатур.The RSA algorithm can be used for both public key encryption and digital signatures. Он также известен как алгоритм с «открытым ключом» или алгоритм асимметричного шифрования, поскольку в нем используется два разных ключа.It is also known as "public key" or asymmetrical encryption because it employs two different keys. Для шифрования разделов в файле Web.config и управления ключами шифрования можно использовать средство регистрации служб IIS ASP.NET (Aspnet_regiis.exe).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 расшифровывает файл конфигурации при обработке файла.ASP.NET decrypts the configuration file when it processes the file. Удостоверение приложения ASP.NET должно иметь права на чтение ключа шифрования, который используется для шифрования и расшифровки зашифрованных разделов.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 Использует API-интерфейс защиты данных (DPAPI) для шифрования разделов конфигурации.Uses the Windows Data Protection API (DPAPI) to encrypt configuration sections. Он использует встроенные службы шифрования Windows и может быть настроен для защиты отдельных компьютеров или отдельных учетных записей пользователей.It uses the Windows built-in cryptographic services and can be configured for either machine-specific or user-account-specific protection. Защиту отдельных компьютеров удобно использовать для нескольких приложений на одном сервере, которым требуется совместное использование данных.Machine-specific protection is useful for multiple applications on the same server that need to share information. Защиту учетных записей можно использовать со службами, выполняемыми с определенным удостоверением пользователя, например с общей средой размещения.User-account-specific protection can be used with services that run with a specific user identity, such as a shared hosting environment. Каждое приложение выполняется с отдельным удостоверением, которое ограничивает доступ к ресурсам, например к файлам и базам данных.Each application runs under a separate identity which restricts access to resources such as files and databases.

Оба поставщика обеспечивают надежное шифрование данных.Both providers offer strong encryption of data. Однако, если планируется использовать один файл конфигурации на нескольких серверах, как в веб-ферме, то только RsaProtectedConfigurationProvider позволяет экспортировать ключи шифрования, применяемые для шифрования данных, и импортировать их в другой сервер.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. Дополнительные сведения см. в разделе Импорт и экспорт защищенных контейнеров ключей RSA для конфигурации.For more information, see Importing and Exporting Protected Configuration RSA Key Containers.

Использование классов конфигурацииUsing the Configuration Classes

Пространство имен System.Configuration предоставляет классы для программной обработки параметров конфигурации.The System.Configuration namespace provides classes to work with configuration settings programmatically. Класс ConfigurationManager обеспечивает доступ к компьютеру, приложению и пользовательским файлам конфигурации.The ConfigurationManager class provides access to machine, application, and user configuration files. При создании приложения ASP.NET можно использовать WebConfigurationManager класс, который предоставляет те же функциональные возможности, а также обеспечивает доступ к параметрам, уникальным для приложений ASP.NET, например, которые находятся в <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>.

Примечание

Пространство имен System.Security.Cryptography содержит классы, которые предоставляют дополнительные возможности шифрования и расшифровки данных.The System.Security.Cryptography namespace contains classes that provide additional options for encrypting and decrypting data. Эти классы можно использовать в том случае, если требуются криптографические службы, недоступные с использованием защищенной конфигурации.Use these classes if you require cryptographic services that are not available using protected configuration. Некоторые из этих классов являются оболочками для Microsoft CryptoAPI, а другие представляют собой реализации полностью на управляемом коде.Some of these classes are wrappers for the unmanaged Microsoft CryptoAPI, while others are purely managed implementations. Дополнительные сведения см. в разделе Службы криптографии.For more information, see Cryptographic Services.

Пример App.configApp.config Example

Этот пример демонстрирует переключение шифрования раздела connectionStrings в файле app.config для приложения Windows.This example demonstrates how to toggle encrypting the connectionStrings section in an app.config file for a Windows application. В этом примере процедура принимает имя приложения в качестве аргумента, например, «MyApplication.exe».In this example, the procedure takes the name of the application as an argument, for example, "MyApplication.exe". Затем файл app.config зашифровывается и копируется в папку, которая содержит исполняемый файл с именем 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".

Примечание

Строку соединения можно расшифровать только на компьютере, где она была зашифрована.The connection string can only be decrypted on the computer on which it was encrypted.

В коде используется метод OpenExeConfiguration, чтобы открыть файл app.config для изменения, а метод GetSection возвращает раздел connectionStrings.The code uses the OpenExeConfiguration method to open the app.config file for editing, and the GetSection method returns the connectionStrings section. Затем код проверяет свойство IsProtected, вызывая метод ProtectSection для шифрования раздела, если он не зашифрован.The code then checks the IsProtected property, calling the ProtectSection to encrypt the section if it is not encrypted. Метод UnprotectSection вызывается для расшифровки раздела.The UnprotectSection method is invoked to decrypt the section. Метод Save завершает операцию и сохраняет изменения.The Save method completes the operation and saves the changes.

Примечание

Для запуска кода необходимо задать ссылку на System.Configuration.dll в проекте.You must set a reference to System.Configuration.dll in your project for the code to run.

static void ToggleConfigEncryption(string exeFile)
{
    // 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

Пример Web.configWeb.config Example

В этом примере используется метод OpenWebConfiguration класса WebConfigurationManager.This example uses the OpenWebConfiguration method of the WebConfigurationManager. Обратите внимание, что в этом случае можно задать относительный путь к файлу Web.config с использованием символа "тильда".Note that in this case you can supply the relative path to the Web.config file by using a tilde. В коде должна быть ссылка на класс 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

Дополнительные сведения о защите приложений ASP.NET см. в статье Защита веб-сайтов ASP.NET.For more information about securing ASP.NET applications, see Securing ASP.NET web sites.

См. также разделSee also