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 10:59] user [¿Como se usa?] |
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?===== | ||
- | + | 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: | |
- | Primero tenemos que agregar una referencia al ensamblado **System.Configuration**, despues 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** | ||
Línea 16: | Línea 15: | ||
**Para leer una configuracion personalizada** | **Para leer una configuracion personalizada** | ||
<code csharp>var cfg = (MiConfiguracion)System.Configuration.ConfigurationManager.GetSection("nombreMiConfiguracion");</code> | <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> | ||
+ |