Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

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>​
 +