Colaboraciones en el Guille

Personalizar el web.config

Agregar secciones de configuración personalizadas en el web.config

 

Fecha: 29/Oct/2005 (28-10-05)
Autor: Gustavo Bonansea - gustavobonansea@yahoo.com.ar - www.gustavobonansea.com.ar

 


Las aplicaciones en .Net cuentan con los conocidos archivos de configuración web.config y app.config, que nos sirven para definir parte del comportamiento de nuestras aplicaciones, como por ejemplo el tipo de autenticación de usuarios a utilizar, cómo manejar los errores (redireccionarlos a una página en especial), opciones de globalización, etc. (Para ver el esquema completo de configuración de Asp.Net: ASP.NET Settings Schema)

Además de las secciones ya definidas podemos agregar opciones de configuración definidas por nosotros para guardar valores propios de la aplicación. La forma más común es utilizar la sección appSettings y agregarle un nodo add con un par nombre-valor.

<appSettings>

        <add key="cnnString" value="Password=pwd;Persist Security Info=True;User ID=sa;Initial Catalog= DatabaseServer;Data Source= Database"/>

</appSettings>

En el ejemplo anterior podemos ver que se agregó un nodo cnnString que tiene por valor la cadena de conexión con la base de datos. De esta forma con el siguiente código podermos obtener el valor y utilizarlo dentro de nuestro programa, con la posibilidad de que se modifique sin necesidad de recompilar:

Dim cnnString As String
'obtengo la cadena de conexion
cnnString = ConfigurationSettings.AppSettings("cnnString")

Y así podemos agregar todos los elementos add que creamos necesarios. Pero que pasa si necesitamos generar configuraciones más avanzadas. Por ejemplo, supongamos que deseamos configurar un componente de logging y deseamos que toda la configuración del mismo se encuentre contenida en una sola sección y no mezclada con las demás configuraciones del appSettings. Para ello debemos crear una sección personalizada dentro del web.config:

<configuration>

      <configSections>

            <section name="logging" type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0, Culture=neutral, PublicKeyToken= b77a5c561934e089" ></section>

      </configSections>

........ Demás nodos

</configuration>

En el código anterior definimos una sección personalizada denominada logging que es del tipo System.Configuration.NameValueSectionHandler. Nos sirve para manejar secciones como la appSettings del tipo nombre-valor. Los posibles tipos de handlers para las secciones son los siguientes:

 

Clase

Descripción

DictionarySectionHandler

Lee la información de configuración del par de clave y valor de una sección de configuración.

IgnoreSectionHandler

Proporciona una definición de controlador de sección para las secciones de configuración que leen y controlan otros sistemas distintos de System.Configuration.

NameValueSectionHandler

Proporciona información de configuración del par de nombre y valor de la sección de configuración.

SingleTagSectionHandler

Sección simple

 

Luego en el archivo web.config detallamos la sección definida anteriormente:

 

<logging>

      <add key="LogColumnSize" value="20"/>

      <!-- Services -->

      <add key="webService" value="true"/>

      <add key="sitePages" value="true"/>

      <add key="Exceptions" value="false"/>

      <add key="webServiceExceptions" value="true"/>

</logging>

Para obtener los valores de la nueva sección utilizaremos el siguiente código:

'declaro una variable que va a manejar la seccion de configuracion
Dim ServiceLoggingConfig As NameValueCollection
Dim value As String

'obtengo el handler para la seccion de configuracion
ServiceLoggingConfig = ConfigurationSettings.GetConfig("logging")
'obtengo el valor guardado en la clave ‘webService’ de la seccion ‘logging’
value = ServiceLoggingConfig("webService")

			

De esta forma podemos administrar todas las secciones que necesitemos de una forma simple y utilizando todos los servicios de configuración que vienen incorporados en el framework.

 


Espacios de nombres usados en el código de este artículo:

System.Configuration


ir al índice principal del Guille