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:\Inetpub\wwwroot\geeks\web.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!!!!

Published 9/7/2009 22:18 por Ibon Landa
Archivado en:
Comparte este post:
http://geeks.ms/blogs/ilanda/archive/2009/07/09/tip-evitando-la-herencia-en-el-fichero-de-configuraci-243-n-para-subcarpetas-de-asp-net.aspx

Comentarios

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

Interesante, esto se puede hacer con todo el web.config o unicamente para el bloque connectionstrings? Gracias.

Friday, July 10, 2009 3:08 AM por Gerson

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

Hola!

Se puede usar con más secciones del web.config, no es exclusivo de connectionStrings.

Un saludo,

Friday, July 10, 2009 8:14 AM por Ibon Landa