ConfigurationManager Classe

Definição

Fornece acesso a arquivos de configuração para aplicativos cliente. Essa classe não pode ser herdada.

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.

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 tenha um arquivo App.config, conforme mostrado abaixo.

<?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 um cadeia de conexão para ler dados de um banco de dados.

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 tenha um App.config, conforme mostrado abaixo.

<?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 ConfigurationManager classe permite que você acesse informações de configuração de computador, aplicativo e usuário. Essa classe substitui a ConfigurationSettings classe , que foi preterida. Para aplicativos Web, use a WebConfigurationManager classe .

Para usar a ConfigurationManager classe , seu projeto deve referenciar o 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.

Observação

O nome e o local do arquivo de configuração do aplicativo dependem do host do aplicativo. Para obter mais informações, consulte Configurando aplicativos usando arquivos de configuração.

Você pode usar os tipos internos System.Configuration ou derivar deles para lidar com informações de configuração. Usando esses tipos, você pode trabalhar diretamente com informações de configuração e estender arquivos de configuração para incluir informações personalizadas.

A ConfigurationManager classe inclui membros que permitem executar as seguintes tarefas:

  • Leia uma seção de um arquivo de configuração. Para acessar informações de configuração, chame o GetSection método . Para algumas seções, como appSettings e connectionStrings, use as AppSettings classes e ConnectionStrings . Esses membros executam operações somente leitura, usam uma única instância armazenada em cache da configuração e têm reconhecimento multithread.

  • Ler e gravar arquivos de configuração como um todo. 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. Use um dos métodos fornecidos pela ConfigurationManager classe para abrir um arquivo de configuração, como SampleApp.exe.config. Esses métodos retornam um Configuration objeto que, por sua vez, expõe métodos e propriedades que você pode usar para trabalhar com os arquivos de configuração associados. Os métodos executam operações de leitura ou gravação e criam os dados de configuração sempre que um arquivo é gravado.

  • Dar suporte a tarefas de configuração. Os seguintes tipos são usados para dar suporte a várias tarefas de configuração:

    Além de trabalhar com informações de configuração existentes, você pode criar e trabalhar com elementos de configuração personalizados estendendo os tipos de configuração internos, como as ConfigurationElementclasses , ConfigurationElementCollectionConfigurationProperty, e ConfigurationSection . Para obter um exemplo de como estender um tipo de configuração interno programaticamente, consulte ConfigurationSection. Para obter um exemplo de como estender um tipo de configuração interno que usa o modelo baseado em atributo, consulte ConfigurationElement.

Notas aos Herdeiros

A Configuration classe habilita o acesso programático para edição de arquivos de configuração. Você usa um dos Open métodos fornecidos por ConfigurationManager. Esses métodos retornam um Configuration objeto , que, por sua vez, fornece os métodos e propriedades necessários para manipular os arquivos de configuração subjacentes. Você pode acessar esses arquivos para leitura ou gravação.

Para ler os arquivos de configuração, use GetSection(String) ou GetSectionGroup(String). O usuário ou processo que lê deve ter as seguintes permissões:

  • Permissão de leitura no arquivo de configuração no nível da hierarquia de configuração atual.

  • Permissões de leitura em todos os arquivos de configuração pai.

Se o aplicativo precisar de acesso somente leitura à sua própria configuração, recomendamos que você use o GetSection(String) método . Esse método fornece acesso aos valores de configuração armazenados em cache para o aplicativo atual, que tem melhor desempenho do que a Configuration classe .

Para gravar nos arquivos de configuração, use um dos Save métodos . O usuário ou processo que grava deve ter as seguintes permissões:

  • Permissão de gravação no arquivo de configuração e no diretório no nível da hierarquia de configuração atual.

  • Permissões de leitura em todos os arquivos de configuração.

Propriedades

AppSettings

Obtém os dados de AppSettingsSection da configuração padrão do aplicativo atual.

ConnectionStrings

Obtém os dados de ConnectionStringsSection da configuração padrão do aplicativo atual.

Métodos

GetSection(String)

Recupera uma seção de configuração especificada para a configuração padrão do aplicativo atual.

OpenExeConfiguration(ConfigurationUserLevel)

Abre o arquivo de configuração para o aplicativo atual como um objeto Configuration.

OpenExeConfiguration(String)

Abre o arquivo de configuração do cliente especificado como um objeto Configuration.

OpenMachineConfiguration()

Abre o arquivo de configuração do computador no computador atual como um objeto Configuration.

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.

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.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Abre o arquivo de configuração do computador como um objeto Configuration que usa o mapeamento de arquivo especificado.

RefreshSection(String)

Atualiza a seção nomeada para que na próxima vez que ela for recuperada ela seja lida novamente do disco.

Aplica-se a

Confira também