ConfigurationManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
econnectionStrings
, 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. |