Cómo utilizar el fichero web.config para configurar una aplicación ASP .NET

En este artículo veremos cómo utilizar el fichero web.config de ASP .NET para configurar una aplicación web, de manera que por ejemplo, no tengamos que compilar de nuevo una librería para cambiar sólamente el valor de una constante o variable.

¿Qué vamos a hacer?

Utilizaremos el fichero web.config para almacenar diferentes valores, principalmente aquellos que pensemos cambiar frecuentemente o aquellos que podría ser útil tener siempre a mano por ejemplo para ser cambiados desde cualquier lugar sin necesidad de tener Microsoft Visual Studio. Una vez preparado el web.config, utilizaremos el fichero global.asax para leer esta configuración al arrancar la aplicación y una clase con variables estáticas para almacenarla y poder leerla desde nuestro código.

En el ejemplo, vamos a almacenar el valor de la cadena de conexión a base de datos, de manera que podamos modificarla fácil y rápidamente si queremos instalar la aplicación en otro servidor sin que tengamos que volver a compilar todo únicamente para cambiar esta cadena. Tambien guardaremos el valor de una variable que indica el número de noticias que se van a mostrar en la portada y otro que servirá para activar o desactivar la publicidad de AdSense en la web.

¿Cómo preparar el fichero web.config?

En primer lugar, crearemos la sección appSettings en el fichero de configuración web.config. La crearemos dentro del nivel configuration pero fuera del nivel system.web tal y como os muestro a continuación.

<configuration>
	<system.web>
    	...
	</system.web>
	<appSettings>
		<add key="CADENA_CONEXION" value="Provider=XXX;Data Source=XXX;User Id=XXX;Password=XXX;database=XXX;"/>
		<add key="NUMERO_NOTICIAS_PORTADA" value="10"/>
		<add key="ADSENSE_ACTIVADO" value="false"/>
	</appSettings>
</configuration>

Como podéis ver en el ejemplo, dentro de la sección que acabamos de crear, introduciremos la clave y valor (la clave podéis elegirla a vuestro gusto) de las tres variables que íbamos a manejar desde el web.config, tal y como habíamos comentado anteriormente.

¿Cómo leer esta configuración desde la aplicación web?

Para almacenar la información, vamos a crear una clase estática con un método Init que se encargará de inicializar las variables y que sólo será llamado una vez, al arrancar la aplicación.

Por si acaso, almacenaremos los datos en variables privadas y crearemos sólamente las propiedades Get, de esta forma evitaremos que se pueda modificar directamente o por un descuido el valor de estas variables, ya que sólo podrán ser modificadas a través del método Init. El constructor privado sirve para impedir que puedan crearse objetos de esta clase, ya que únicamente nos interesa como clase estática.

public class Configuracion {
	private static string m_cadenaConexion = "";
	private static int m_numeroNoticiasPortada = 0;
	private static bool m_adsenseActivado = false;
    
	private Configuracion() { }
    
	public static Init(string cadenaConexion, numeroNoticiasPortada, adsenseActivado) {
		m_cadenaConexion = cadenaConexion;
		m_numeroNoticiasPortada = numeroNoticiasPortada;
		m_adsenseActivado = adsenseActivado;
	}
    
	public string CadenaConexion { get { return m_cadenaConexion;} }
	public int NumeroNoticiasPortada { get { return m_numeroNoticiasPortada;} }
	public bool AdsenseActivado { get { return m_adsenseActivado;} }
}

Una vez hecho esto, sólo nos queda leer la configuración. Para ello utilizaremos el método Application_Start del fichero global.asax, ya que se ejecuta sólamente una vez, al iniciarse la aplicación.

public class Global : System.Web.HttpApplication {
	public Global() {}
	...
	protected void Application_Start(Object sender, EventArgs e) {
		string cadenaConexion = System.Configuration.ConfigurationManager.AppSettings["CADENA_CONEXION"];
		int numeroNoticiasPortada = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["NUMERO_NOTICIAS_PORTADA"]);
		bool adsenseActivado = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["ADSENSE_ACTIVADO"]);

		Configuracion.Init(cadenaConexion, numeroNoticiasPortada, adsenseActivado);
	}
	...
}

Para leer uno de los valores de configuración, utilizaremos la sentencia System.Configuration.ConfigurationManager.AppSettings["clave"], donde clave es la clave que habíamos escogido anteriormente.

Hay que tener en cuenta que la sentencia anterior sólo nos dará los valores como strings, tal y como aparecen en el fichero web.config. Por lo tanto, para leer valores enteros o booleanos, tendremos que convertir ese string al tipo de dato correspondiente igual que en el ejemplo.

Nuestra puntuación
Twittear
Compartir
Compartir
Pin