Partilhar via


ConfigurationManager Classe

Definição

Fornece acesso aos 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 a seguir mostra como usar uma 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

Comentários

A classe ConfigurationManager permite que você acesse informações de configuração de computador, aplicativo e usuário. Essa classe substitui a classe ConfigurationSettings, que foi preterida. Para aplicativos Web, use a classe WebConfigurationManager.

Para usar a classe ConfigurationManager, seu projeto deve referenciar o assembly System.Configuration. Por padrão, alguns modelos de projeto, como o Aplicativo de Console, não fazem referência a esse assembly, portanto, você deve referenciá-lo manualmente.

Nota

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 de System.Configuration internos ou derivar deles para lidar com as 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 classe ConfigurationManager 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 método GetSection. Para algumas seções, como appSettings e connectionStrings, use as classes AppSettings 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 configurações em qualquer nível, para si mesmo ou para outros aplicativos ou computadores, local ou remotamente. 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. 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 classes ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertye 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 classe Configuration habilita o acesso programático para editar arquivos de configuração. Você usa um dos métodos de Open fornecidos pelo ConfigurationManager. Esses métodos retornam um objeto Configuration, que, por sua vez, fornece os métodos e propriedades necessários para lidar com 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 Leitura no arquivo de configuração no nível da hierarquia de configuração atual.

  • Ler permissões em todos os arquivos de configuração pai.

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

Para gravar nos arquivos de configuração, use um dos métodos Save. 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.

  • Ler permissões em todos os arquivos de configuração.

Propriedades

AppSettings

Obtém os dados AppSettingsSection para a configuração padrão do aplicativo atual.

ConnectionStrings

Obtém os dados ConnectionStringsSection para a 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 do 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, Boolean)

Abre o arquivo de configuração do cliente especificado como um objeto Configuration que usa a opção de mapeamento de arquivo, nível de usuário e pré-carregamento especificados.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Abre o arquivo de configuração do cliente especificado como um objeto Configuration que usa o mapeamento de arquivo e o nível de usuário 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 será relançada do disco.

Aplica-se a

Confira também