Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
cap:dotnet:config [2018/02/23 08:06] user |
cap:dotnet:config [2018/02/23 16:40] (actual) user [En el archivo de configuración] |
||
|---|---|---|---|
| Línea 5: | Línea 5: | ||
| =====¿Como se usa?===== | =====¿Como se usa?===== | ||
| - | Existen varias formas de utilizarlos dependiendo de la configuración que deseemos utilizar, por ejemplo: | + | Primero tenemos que agregar una referencia al ensamblado **System.Configuration**, después de agregar dicha referencia existen varias formas de utilizarlos dependiendo de la configuración que deseemos utilizar, por ejemplo: |
| **Para leer una cadena de conexión** | **Para leer una cadena de conexión** | ||
| + | <code csharp>System.Configuration.ConfigurationManager.ConnectionStrings["nombreConexion"]</code> | ||
| + | |||
| + | **Para leer una llave de aplicación** | ||
| + | <code csharp>System.Configuration.ConfigurationManager.AppSettings["nombreLlave"]</code> | ||
| + | |||
| + | **Para leer una configuracion personalizada** | ||
| + | <code csharp>var cfg = (MiConfiguracion)System.Configuration.ConfigurationManager.GetSection("nombreMiConfiguracion");</code> | ||
| + | |||
| + | =====¿Como funciona?===== | ||
| + | Para empezar, la configuración de DotNet funciona como una herencia y todo empieza en el machine.config. | ||
| + | |||
| + | {{ cap:dotnet:config:dotnet_config.png }} | ||
| + | |||
| + | El //machine.config// es el archivo de mayor jerarquía en las configuraciones, este hereda a los //web.config// y a los //app.config//, en entornos web se usa el //web.config//, en las aplicaciones de escritorio se usa el //app.config//. | ||
| + | |||
| + | Existen configuraciones que pueden ser sobre-escritas, es decir, que una vez que se definieron pueden ser alteradas en sus herencias, pero existen otras configuraciones que no pueden ser sobre-escritas, es decir, una vez que se definieron su valor se mantiene durante toda la herencia. | ||
| + | |||
| + | Existe una carpeta llamada **Config** donde está el archivo //machine.config// y este hereda sus valores al archivo //web.config// que está en la misma carpeta, este archivo hereda su configuración al archivo //web.config// que se encuentra en cada sitio, y el archivo //web.config// de cada sitio hereda su configuración al archivo //web.config// de cada aplicación web, por último, cada archivo //web.config// de cada aplicación puede heredar su configuración a los archivos //web.config// de cada carpeta en la aplicación. | ||
| + | |||
| + | =====¿Como se define una configuración personalizada?===== | ||
| + | La configuración personalizada se define en 2 partes. | ||
| + | |||
| + | - En el código | ||
| + | - En el archivo de configuración | ||
| + | |||
| + | ====En el código==== | ||
| + | * Se tiene que crear una clase y hacer que esta clase implemente la interface //IConfigurationSectionHandler//. | ||
| + | * En el método **create** escribir el código necesario para leer el contenido XML de la configuración y pasarla a la entidad o entidades necesarias. | ||
| + | |||
| + | <code csharp> | ||
| + | public class MiConfiguracion : IConfigurationSectionHandler | ||
| + | { | ||
| + | public object Create(object parent, object configContext, XmlNode section) | ||
| + | { | ||
| + | //Leer XmlNode section para obtener los valores de la configuracion | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | ====En el archivo de configuración==== | ||
| + | * Agregar en la sección **configuration/configSections** la referencia a nuestra clase de configuración. | ||
| + | * Agregar en la sección **configuration** el contenido xml que define la configuración de nuestra clase de configuración | ||
| + | * Podemos trasladar el contenido a un archivo por medio del atributo //configSource//. | ||
| + | |||
| + | **Opción 1** | ||
| + | <code xml> | ||
| + | <configuration> | ||
| + | <configSections> | ||
| + | <section name="nombreSeccion" type="Full Qualified Name" /> | ||
| + | </configSections> | ||
| + | <nombreSeccion> | ||
| + | <elementosDeConfiguracion atributosDeConfiguracion="" /> | ||
| + | </nombreSeccion> | ||
| + | </configuration> | ||
| + | </code> | ||
| + | |||
| + | **Opción 2** | ||
| + | <code xml> | ||
| + | <configuration> | ||
| + | <configSections> | ||
| + | <section name="nombreSeccion" type="Full Qualified Name" /> | ||
| + | </configSections> | ||
| + | <nombreSeccion configSource="nombreArchivoConfiguracion" /> | ||
| + | </configuration> | ||
| + | </code> | ||
| + | |||