Compartir a través de


ConfigurationManager Clase

Definición

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 y connectionStrings, 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.

Se aplica a

Consulte también