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 para las aplicaciones cliente. Esta clase no puede heredarse.
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 anterior se supone que el proyecto tiene un archivo App.config, como se muestra a continuación.
<?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>
En el ejemplo siguiente se muestra cómo usar un 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
En el ejemplo anterior se supone que el proyecto tiene una App.config como se muestra a continuación.
<?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>
Comentarios
La ConfigurationManager clase le permite acceder a la información de configuración del equipo, la aplicación y el usuario. Esta clase reemplaza a la ConfigurationSettings clase , que está en desuso. Para las aplicaciones web, use la WebConfigurationManager clase .
Para usar la clase , el ConfigurationManager proyecto debe hacer referencia al System.Configuration
ensamblado. De forma predeterminada, algunas plantillas de proyecto, como la 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 integrados System.Configuration 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 ConfigurationManager clase 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 GetSection método . Para algunas secciones como
appSettings
yconnectionStrings
, use las AppSettings clases 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 opciones 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 ConfigurationManager clase para abrir un archivo de configuración como SampleApp.exe.config. Estos métodos devuelven un Configuration objeto 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.
Admitir 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 ConfigurationElementclases , ConfigurationElementCollection, ConfigurationPropertyy ConfigurationSection . Para obtener un ejemplo de cómo extender un tipo de configuración integrado mediante programación, vea ConfigurationSection. Para obtener un ejemplo de cómo ampliar un tipo de configuración integrado que usa el modelo basado en atributos, vea ConfigurationElement.
Notas a los desarrolladores de herederos
La Configuration clase habilita el acceso mediante programación para editar archivos de configuración. Use uno de los Open
métodos proporcionados por ConfigurationManager. Estos métodos devuelven un Configuration objeto , 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 proceso que lee debe 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 GetSection(String) método . 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 Configuration clase .
Para escribir en los archivos de configuración, use uno de los Save métodos . 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 para la configuración predeterminada de la aplicación actual. |
ConnectionStrings |
Obtiene los datos ConnectionStringsSection para 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 para 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 del equipo como un objeto Configuration en el equipo actual. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
Abre el archivo de configuración de cliente especificado como un objeto Configuration que utiliza la asignación de archivos y el nivel de usuario indicados. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) |
Abre el archivo de configuración de cliente especificado como un objeto Configuration que usa la asignación de archivos, nivel de usuario y opción de carga previa. |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
Abre el archivo de configuración del equipo como un objeto Configuration que utiliza la asignación de archivos especificada. |
RefreshSection(String) |
Actualiza la sección con nombre para que se vuelva a leer desde el disco la próxima vez que se recupere. |