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 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
econnectionStrings
, 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. |