ConfigurationManager Classe

Definição

Fornece acesso a arquivos de configuração para aplicativos cliente.Provides access to configuration files for client applications. Essa classe não pode ser herdada.This class cannot be inherited.

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
Herança
ConfigurationManager

Exemplos

O primeiro exemplo mostra um aplicativo de console simples que lê as configurações do aplicativo, adiciona uma nova configuração e atualiza uma configuração existente.The first example shows a simple console application that reads application settings, adds a new setting, and updates an existing setting.

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  

O exemplo anterior pressupõe que seu projeto tem um arquivo app. config, como mostrado abaixo.The previous example assumes your project has an App.config file as shown below.

<?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>  

O exemplo a seguir mostra como usar uma cadeia de conexão para ler dados de um banco de dado.The following example shows how to use a connection string to read data from a database.

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  

O exemplo anterior pressupõe que seu projeto tem um app. config, como mostrado abaixo.The previous example assumes your project has an App.config as shown below.

<?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>  

Comentários

A classe ConfigurationManager permite que você acesse as informações de configuração de computador, aplicativo e usuário.The ConfigurationManager class enables you to access machine, application, and user configuration information. Essa classe substitui a classe ConfigurationSettings, que é preterida.This class replaces the ConfigurationSettings class, which is deprecated. Para aplicativos Web, use a classe WebConfigurationManager.For web applications, use the WebConfigurationManager class.

Para usar a classe ConfigurationManager, seu projeto deve referenciar o assembly System.Configuration.To use the ConfigurationManager class, your project must reference the System.Configuration assembly. Por padrão, alguns modelos de projeto, como aplicativo de console, não fazem referência a esse assembly, portanto, você deve referenciá-lo manualmente.By default, some project templates, like Console Application, do not reference this assembly so you must manually reference it.

Observação

O nome e o local do arquivo de configuração do aplicativo dependem do host do aplicativo.The name and location of the application configuration file depend on the application's host. Para obter mais informações, consulte Configurando aplicativos usando arquivos de configuração.For more information, see Configuring Apps by using Configuration Files.

Você pode usar os tipos de System.Configuration internos ou derivá-los para manipular informações de configuração.You can use the built-in System.Configuration types or derive from them to handle configuration information. Usando esses tipos, você pode trabalhar diretamente com informações de configuração e pode estender os arquivos de configuração para incluir informações personalizadas.By using these types, you can work directly with configuration information and you can extend configuration files to include custom information.

A classe ConfigurationManager inclui membros que permitem que você execute as seguintes tarefas:The ConfigurationManager class includes members that enable you to perform the following tasks:

  • Leia uma seção de um arquivo de configuração.Read a section from a configuration file. Para acessar as informações de configuração, chame o método GetSection.To access configuration information, call the GetSection method. Para algumas seções, como appSettings e connectionStrings, use as classes AppSettings e ConnectionStrings.For some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. Esses membros executam operações somente leitura, usam uma única instância armazenada em cache da configuração e têm reconhecimento multithread.These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware.

  • Ler e gravar arquivos de configuração como um todo.Read and write configuration files as a whole. Seu aplicativo pode ler e gravar definições de configuração em qualquer nível, para si mesmo ou para outros aplicativos ou computadores, local ou remotamente.Your application can read and write configuration settings at any level, for itself or for other applications or computers, locally or remotely. Use um dos métodos fornecidos pela classe ConfigurationManager para abrir um arquivo de configuração, como SampleApp. exe. config. Esses métodos retornam um objeto Configuration que, por sua vez, expõe métodos e propriedades que você pode usar para trabalhar com os arquivos de configuração associados.Use one of the methods provided by the ConfigurationManager class to open a configuration file such as SampleApp.exe.config. These methods return a Configuration object that in turn exposes methods and properties you can use to work with the associated configuration files. Os métodos executam operações de leitura ou gravação e criam os dados de configuração toda vez que um arquivo é gravado.The methods perform read or write operations and create the configuration data every time that a file is written.

  • Suporte a tarefas de configuração.Support configuration tasks. Os tipos a seguir são usados para dar suporte a várias tarefas de configuração:The following types are used to support various configuration tasks:

    Além de trabalhar com as informações de configuração existentes, você pode criar e trabalhar com elementos de configuração personalizados, estendendo os tipos de configuração interna, como as classes ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertye ConfigurationSection.In addition to working with existing configuration information, you can create and work with custom configuration elements by extending the built-in configuration types such as the ConfigurationElement, ConfigurationElementCollection, ConfigurationProperty, and ConfigurationSection classes. Para obter um exemplo de como estender um tipo de configuração interna programaticamente, consulte ConfigurationSection.For an example of how to extend a built-in configuration type programmatically, see ConfigurationSection. Para obter um exemplo de como estender um tipo de configuração interna que usa o modelo baseado em atributo, consulte ConfigurationElement.For an example of how to extend a built-in configuration type that uses the attribute-based model, see ConfigurationElement.

Notas aos Herdeiros

A classe Configuration permite o acesso programático à edição de arquivos de configuração.The Configuration class enables programmatic access for editing configuration files. Você usa um dos métodos abertos fornecidos pelo ConfigurationManager.You use one of the Open methods provided by ConfigurationManager. Esses métodos retornam um objeto Configuration, que, por sua vez, fornece os métodos e as propriedades necessários para lidar com os arquivos de configuração subjacentes.These methods return a Configuration object, which in turn provides the required methods and properties to handle the underlying configuration files. Você pode acessar esses arquivos para leitura ou gravação.You can access these files for reading or writing.

Para ler os arquivos de configuração, use GetSection(String) ou GetSectionGroup(String) para ler as informações de configuração.To read the configuration files, use GetSection(String) or GetSectionGroup(String) to read configuration information. O usuário ou processo que lê deve ter as seguintes permissões:The user or process that reads must have the following permissions: -Permissão de leitura no arquivo de configuração no nível da hierarquia de configuração atual.- Read permission on the configuration file at the current configuration hierarchy level.

-Permissões de leitura em todos os arquivos de configuração pai.- Read permissions on all the parent configuration files.

Se seu aplicativo precisar de acesso somente leitura para sua própria configuração, recomendamos que você use o método GetSection(String).If your application needs read-only access to its own configuration, we recommend that you use the GetSection(String) method. Esse método fornece acesso aos valores de configuração em cache para o aplicativo atual, que tem um desempenho melhor do que a classe Configuration.This method provides access to the cached configuration values for the current application, which has better performance than the Configuration class.

Para gravar nos arquivos de configuração, use um dos métodos de Save.To write to the configuration files, use one of the Save methods. O usuário ou processo que grava deve ter as seguintes permissões:The user or process that writes must have the following permissions: -Permissão de gravação no arquivo de configuração e no diretório no nível da hierarquia de configuração atual.- Write permission on the configuration file and directory at the current configuration hierarchy level.

-Permissões de leitura em todos os arquivos de configuração.- Read permissions on all the configuration files.

Propriedades

AppSettings

Obtém os dados de AppSettingsSection da configuração padrão do aplicativo atual.Gets the AppSettingsSection data for the current application's default configuration.

ConnectionStrings

Obtém os dados de ConnectionStringsSection da configuração padrão do aplicativo atual.Gets the ConnectionStringsSection data for the current application's default configuration.

Métodos

GetSection(String)

Recupera uma seção de configuração especificada para a configuração padrão do aplicativo atual.Retrieves a specified configuration section for the current application's default configuration.

OpenExeConfiguration(ConfigurationUserLevel)

Abre o arquivo de configuração para o aplicativo atual como um objeto Configuration.Opens the configuration file for the current application as a Configuration object.

OpenExeConfiguration(String)

Abre o arquivo de configuração do cliente especificado como um objeto Configuration.Opens the specified client configuration file as a Configuration object.

OpenMachineConfiguration()

Abre o arquivo de configuração do computador no computador atual como um objeto Configuration.Opens the machine configuration file on the current computer as a Configuration object.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Abre o arquivo de configuração do cliente especificado como um objeto Configuration que usa o mapeamento de arquivo e nível de usuário especificados.Opens the specified client configuration file as a Configuration object that uses the specified file mapping and user level.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Abre o arquivo de configuração do cliente especificado como um objeto Configuration que usa o mapeamento de arquivo, nível de usuário e opção de pré-carga especificados.Opens the specified client configuration file as a Configuration object that uses the specified file mapping, user level, and preload option.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Abre o arquivo de configuração do computador como um objeto Configuration que usa o mapeamento de arquivo especificado.Opens the machine configuration file as a Configuration object that uses the specified file mapping.

RefreshSection(String)

Atualiza a seção nomeada para que na próxima vez que ela for recuperada ela seja lida novamente do disco.Refreshes the named section so the next time that it is retrieved it will be re-read from disk.

Aplica-se a

Veja também