ConfigurationManager Clase

Definición

Proporciona acceso a los archivos de configuración para las aplicaciones cliente.Provides access to configuration files for client applications. No se puede heredar esta clase.This class cannot be inherited.

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 simple que lee la configuración de la aplicación, agrega una nueva configuración y actualiza una configuración existente.The first example shows a simple console application that reads application settings, adds a new setting, and updates an existing setting.

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.The previous example assumes your project has an App.config file as shown below.

<?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 utilizar una cadena de conexión para leer los datos de una base de datos.The following example shows how to use a connection string to read data from a database.

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 un archivo app. config, como se muestra a continuación.The previous example assumes your project has an App.config as shown below.

<?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 clase ConfigurationManager permite tener acceso a la información de configuración del equipo, la aplicación y el usuario.The ConfigurationManager class enables you to access machine, application, and user configuration information. Esta clase reemplaza a la clase ConfigurationSettings, que está en desuso.This class replaces the ConfigurationSettings class, which is deprecated. En el caso de las aplicaciones Web, use la clase WebConfigurationManager.For web applications, use the WebConfigurationManager class.

Para usar la clase ConfigurationManager, el proyecto debe hacer referencia al ensamblado System.Configuration.To use the ConfigurationManager class, your project must reference the System.Configuration assembly. De forma predeterminada, algunas plantillas de proyecto, como aplicación de consola, no hacen referencia a este ensamblado, por lo que debe hacer referencia a él de forma manual.By default, some project templates, like Console Application, do not reference this assembly so you must manually reference it.

Nota

El nombre y la ubicación del archivo de configuración de la aplicación dependen del host de la aplicación.The name and location of the application configuration file depend on the application's host. Para obtener más información, consulte configuración de aplicaciones mediante archivos de configuración.For more information, see Configuring Apps by using Configuration Files.

Puede usar los tipos de System.Configuration integrados o derivarlos de ellos para controlar la información de configuración.You can use the built-in System.Configuration types or derive from them to handle configuration information. Mediante el uso de estos tipos, puede trabajar directamente con la información de configuración y puede extender los archivos de configuración para incluir información personalizada.By using these types, you can work directly with configuration information and you can extend configuration files to include custom information.

La clase ConfigurationManager incluye miembros que le permiten realizar las siguientes tareas:The ConfigurationManager class includes members that enable you to perform the following tasks:

  • Lea una sección de un archivo de configuración.Read a section from a configuration file. Para obtener acceso a la información de configuración, llame al método GetSection.To access configuration information, call the GetSection method. En algunas secciones como appSettings y connectionStrings, utilice las clases AppSettings y ConnectionStrings.For some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. Estos miembros realizan operaciones de solo lectura, usan una única instancia almacenada en caché de la configuración y son compatibles con multiproceso.These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware.

  • Leer y escribir archivos de configuración en su totalidad.Read and write configuration files as a whole. 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.Your application can read and write configuration settings at any level, for itself or for other applications or computers, locally or remotely. 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.Use one of the methods provided by the ConfigurationManager class to open a configuration file such as SampleApp.exe.config. These methods return a Configuration object that in turn exposes methods and properties you can use to work with the associated configuration files. Los métodos realizan operaciones de lectura o escritura y crean los datos de configuración cada vez que se escribe un archivo.The methods perform read or write operations and create the configuration data every time that a file is written.

  • Admite tareas de configuración.Support configuration tasks. Los tipos siguientes se usan para admitir varias tareas de configuración:The following types are used to support various configuration tasks:

    Además de trabajar con la información de configuración existente, puede crear y trabajar con elementos de configuración personalizados extendiendo los tipos de configuración integrados como las clases ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertyy ConfigurationSection.In addition to working with existing configuration information, you can create and work with custom configuration elements by extending the built-in configuration types such as the ConfigurationElement, ConfigurationElementCollection, ConfigurationProperty, and ConfigurationSection classes. Para obtener un ejemplo de cómo extender un tipo de configuración integrado mediante programación, vea ConfigurationSection.For an example of how to extend a built-in configuration type programmatically, see ConfigurationSection. Para obtener un ejemplo de cómo extender un tipo de configuración integrado que usa el modelo basado en atributos, vea ConfigurationElement.For an example of how to extend a built-in configuration type that uses the attribute-based model, see ConfigurationElement.

Notas a los desarrolladores de herederos

La clase Configuration permite el acceso mediante programación para editar archivos de configuración.The Configuration class enables programmatic access for editing configuration files. Puede usar uno de los métodos abiertos proporcionados por ConfigurationManager.You use one of the Open methods provided by ConfigurationManager. Estos métodos devuelven un objeto Configuration, que a su vez proporciona los métodos y las propiedades necesarios para controlar los archivos de configuración subyacentes.These methods return a Configuration object, which in turn provides the required methods and properties to handle the underlying configuration files. Puede tener acceso a estos archivos para lectura o escritura.You can access these files for reading or writing.

Para leer los archivos de configuración, use GetSection(String) o GetSectionGroup(String) para leer la información de configuración.To read the configuration files, use GetSection(String) or GetSectionGroup(String) to read configuration information. El usuario o proceso que lee debe tener los permisos siguientes:The user or process that reads must have the following permissions: -Permiso de lectura en el archivo de configuración en el nivel de la jerarquía de configuración actual.- Read permission on the configuration file at the current configuration hierarchy level.

: Permisos de lectura en todos los archivos de configuración principales.- Read permissions on all the parent configuration files.

Si la aplicación necesita acceso de solo lectura a su propia configuración, se recomienda utilizar el método GetSection(String).If your application needs read-only access to its own configuration, we recommend that you use the GetSection(String) method. 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 el Configuration clase.This method provides access to the cached configuration values for the current application, which has better performance than the Configuration class.

Para escribir en los archivos de configuración, use uno de los métodos Save.To write to the configuration files, use one of the Save methods. El usuario o proceso que escribe debe tener los permisos siguientes:The user or process that writes must have the following permissions: -Permiso de escritura en el archivo de configuración y el directorio en el nivel de la jerarquía de configuración actual.- Write permission on the configuration file and directory at the current configuration hierarchy level.

: Permisos de lectura en todos los archivos de configuración.- Read permissions on all the configuration files.

Propiedades

AppSettings

Obtiene los datos AppSettingsSection para la configuración predeterminada de la aplicación actual.Gets the AppSettingsSection data for the current application's default configuration.

ConnectionStrings

Obtiene los datos ConnectionStringsSection para la configuración predeterminada de la aplicación actual.Gets the ConnectionStringsSection data for the current application's default configuration.

Métodos

GetSection(String)

Recupera una sección de configuración especificada para la configuración predeterminada de la aplicación actual.Retrieves a specified configuration section for the current application's default configuration.

OpenExeConfiguration(ConfigurationUserLevel)

Abre el archivo de configuración para la aplicación actual como un objeto Configuration.Opens the configuration file for the current application as a Configuration object.

OpenExeConfiguration(String)

Abre el archivo de configuración de cliente especificado como un objeto Configuration.Opens the specified client configuration file as a Configuration object.

OpenMachineConfiguration()

Abre el archivo de configuración del equipo como un objeto Configuration en el equipo actual.Opens the machine configuration file on the current computer as a Configuration object.

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.Opens the specified client configuration file as a Configuration object that uses the specified file mapping and user level.

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 especificados.Opens the specified client configuration file as a Configuration object that uses the specified file mapping, user level, and preload option.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Abre el archivo de configuración del equipo como un objeto Configuration que utiliza la asignación de archivos especificada.Opens the machine configuration file as a Configuration object that uses the specified file mapping.

RefreshSection(String)

Actualiza la sección con nombre para que se vuelva a leer desde el disco la próxima vez que se recupere.Refreshes the named section so the next time that it is retrieved it will be re-read from disk.

Se aplica a

Consulte también: