ConfigurationManager Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona acceso a los archivos de configuración de las aplicaciones cliente. Esta clase no se puede heredar.
public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
- Herencia
-
ConfigurationManager
Ejemplos
En el primer ejemplo se muestra una aplicación de consola sencilla que lee la configuración de la aplicación, agrega una nueva configuración y actualiza una configuración 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
En el ejemplo siguiente se muestra cómo usar una cadena de conexión para leer datos de una base de datos.
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
Comentarios
La clase ConfigurationManager permite acceder a la información de configuración de máquina, aplicación y usuario. Esta clase reemplaza a la clase ConfigurationSettings, que está en desuso. En el caso de las aplicaciones web, use la clase WebConfigurationManager.
Para usar la clase ConfigurationManager, el proyecto debe hacer referencia al ensamblado System.Configuration
. De forma predeterminada, algunas plantillas de proyecto, como aplicación de consola, no hacen referencia a este ensamblado, por lo que debe hacer referencia manualmente a él.
Nota
El nombre y la ubicación del archivo de configuración de la aplicación dependen del host de la aplicación. Para obtener más información, consulte Configuración de aplicaciones mediante archivos de configuración.
Puede usar los tipos de System.Configuration integrados o derivarlos de ellos para controlar la información de configuración. Con estos tipos, puede trabajar directamente con la información de configuración y puede ampliar los archivos de configuración para incluir información personalizada.
La clase ConfigurationManager incluye miembros que permiten realizar las siguientes tareas:
Lea una sección de un archivo de configuración. Para acceder a la información de configuración, llame al método GetSection. Para algunas secciones como
appSettings
yconnectionStrings
, use las clases AppSettings y ConnectionStrings. Estos miembros realizan operaciones de solo lectura, usan una única instancia almacenada en caché de la configuración y son compatibles con varios subprocesos.Leer y escribir archivos de configuración en su conjunto. La aplicación puede leer y escribir valores de configuración en cualquier nivel, para sí mismo o para otras aplicaciones o equipos, de forma local o remota. Use uno de los métodos proporcionados por la clase ConfigurationManager para abrir un archivo de configuración como SampleApp.exe.config. Estos métodos devuelven un objeto Configuration que, a su vez, expone métodos y propiedades que puede usar para trabajar con los archivos de configuración asociados. Los métodos realizan operaciones de lectura o escritura y crean los datos de configuración cada vez que se escribe un archivo.
Compatibilidad con tareas de configuración. Los siguientes tipos se usan para admitir varias tareas de configuración:
Además de trabajar con información de configuración existente, puede crear y trabajar con elementos de configuración personalizados mediante la extensión de los tipos de configuración integrados, como las clases ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertyy ConfigurationSection. Para obtener un ejemplo de cómo extender un tipo de configuración integrado mediante programación, consulte ConfigurationSection. Para obtener un ejemplo de cómo extender un tipo de configuración integrado que usa el modelo basado en atributos, consulte ConfigurationElement.
Notas a los desarrolladores de herederos
La clase Configuration habilita el acceso mediante programación para editar archivos de configuración. Use uno de los métodos de Open
proporcionados por ConfigurationManager. Estos métodos devuelven un objeto Configuration, que a su vez proporciona los métodos y propiedades necesarios para controlar los archivos de configuración subyacentes. Puede acceder a estos archivos para leer o escribir.
Para leer los archivos de configuración, use GetSection(String) o GetSectionGroup(String). El usuario o el proceso que lee deben tener los permisos siguientes:
Permiso de lectura en el archivo de configuración en el nivel de jerarquía de configuración actual.
Permisos de lectura en todos los archivos de configuración primarios.
Si la aplicación necesita acceso de solo lectura a su propia configuración, se recomienda usar el método GetSection(String). Este método proporciona acceso a los valores de configuración almacenados en caché para la aplicación actual, que tiene un mejor rendimiento que la clase Configuration.
Para escribir en los archivos de configuración, use uno de los métodos Save. El usuario o proceso que escribe debe tener los permisos siguientes:
Permiso de escritura en el archivo de configuración y el directorio en el nivel de jerarquía de configuración actual.
Permisos de lectura en todos los archivos de configuración.
Propiedades
AppSettings |
Obtiene los datos AppSettingsSection de la configuración predeterminada de la aplicación actual. |
ConnectionStrings |
Obtiene los datos ConnectionStringsSection de la configuración predeterminada de la aplicación actual. |
Métodos
GetSection(String) |
Recupera una sección de configuración especificada para la configuración predeterminada de la aplicación actual. |
OpenExeConfiguration(ConfigurationUserLevel) |
Abre el archivo de configuración de la aplicación actual como un objeto Configuration. |
OpenExeConfiguration(String) |
Abre el archivo de configuración de cliente especificado como un objeto Configuration. |
OpenMachineConfiguration() |
Abre el archivo de configuración de la máquina en el equipo actual como un objeto Configuration. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) |
Abre el archivo de configuración de cliente especificado como un objeto Configuration que usa la opción de asignación de archivos, nivel de usuario y precarga especificada. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
Abre el archivo de configuración de cliente especificado como un objeto Configuration que usa la asignación de archivos y el nivel de usuario especificados. |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
Abre el archivo de configuración de la máquina como un objeto Configuration que usa la asignación de archivos especificada. |
RefreshSection(String) |
Actualiza la sección con nombre para que la próxima vez que se recupere se volverá a leer del disco. |