Tip: Evitando la herencia en el fichero de configuración para subcarpetas de ASP.NET

En un mismo Site tengo dos aplicaciones web. Una colgando directamente del raíz de Site y otra en un directorio virtual que cuelga de éste.

Cada aplicación tiene su fichero de configuración (web.config). La segunda aplicación, la del directorio virtual, hereda todos los valores de configuración del fichero de configuración raíz.

El fichero de configuración real que tendrá la segunda aplicación es el contenido del fichero de configuración que tiene el nodo raíz más su propio fichero de configuración físico.

En algunas circunstancias esta situación nos puede venir bien pero en otras no tan bien y nos puede dar problemas.

Por ejemplo, si tenemos definida la misma cadena de conexión en ambos ficheros pero con valores diferentes (si los valores son iguales no hay problema ) veremos que la aplicación nos da un error:

<add name="Database" connectionString="Server=.;Initial Catalog=Database; Integrated Security = true" />

Configuration Error

Ya se ha agregado la entrada ‘Database.

(C:Inetpubwwwrootgeeksweb.config line 27)

Una solución para evitar esta situación es utilizar la cláusula remove, que nos va a permitir eliminar un valor heredado.

<connectionStrings>
  <remove name="Database"/>
  <add name="Database" connectionString="Server=.;Initial Catalog=Database; Integrated Security = true" />
</connectionStrings>

Si queremos borrar todas las opciones heredadas tenemos la cláusula clear.

<connectionStrings>
  <clear/>
  <add name="Database" connectionString="Server=.;Initial Catalog=Database; Integrated Security = true" />
</connectionStrings>

Y para terminar un apunte final. Si encriptais las cadenas de conexión, cosa que sería recomendable, la única opción que vais a poder utilizar es la de borrar todos los valores heredados con la sentencia clear.

Si usas la sentencia remove, al encriptar la cadena de conexión se pierde…si encriptas teniendo la clausula remove y desencriptas posteriormente verás como el remove ya no existe!!!!

Ibon Landa

bon Landa lleva más de 15 años dedicado al desarrollo de software. Durante este tiempo ha trabajado en diferentes empresas en las cuáles ha podido trabajar en diferentes entornos y tecnologías. Actualmente está focalizado principalmente en tareas de desarrollo, arquitectura, en las herramientas del ciclo de vida y en todo lo relacionado con la plataforma de Cloud Computing Microsoft Azure, área en el que ha sido reconocido como MVP. Participa de forma activa en la comunidad, escribiendo su blog, manteniendo un portal sobre Microsoft Azure y colaborando con Microsoft y grupos de usuarios en eventos de formación, talleres y giras de producto.

2 comentarios en “Tip: Evitando la herencia en el fichero de configuración para subcarpetas de ASP.NET”

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *