jueves, 28 de mayo de 2009

Cómo deshabilitar herencia web.config para subcarpetas en ASP.NET? (remove)

En wwwroot tengo el web config general el cual tiene un connectionStrings asi:
< connectionStrings >
< add name="cnstring1" connectionString="Data Source=xx;User ID=xx;Password=yy;/ >
< add name="cnstring2" connectionString="Data Source=xx;User ID=xx;Password=yy;/ >


y en un nuevo directorio virtual(sub carpeta) tiene su propio web config:

< connectionStrings >
< add name="cnstring1" connectionString="Data Source=yy;User ID=yy;Password=xx;/ >


este codigo da un error* por que el web config padre tiene una entrada igual, lo mas logico seria usar la del padre pero yo necesito que la entrada sea la misma pero con diferencias en los valores.

*detalle del error
Configuration Error
Ya se ha agregado la entrada 'cnstring1'.
(C:\Inetpub\wwwroot\test\web.config line 27)


Soluciones:
< remove / >
< clear / >

Ejemplo del remove.
< connectionStrings >
< remove name="cnstring1" />
< add name="cnstring1" connectionString="Data Source=xx;User ID=xx;Password=yy;/ >


aqui ya funciona, si van usar el clear solo tengan cuidado por que limpia todas las opciones heredadas.

Referencia completa msdn.
http://msdn.microsoft.com/es-es/library/6d7742fh.aspx

3 comentarios:

Gerson dijo...

Excelente artículo, mi dudad es como hacer para que una subcarpeta o aplicación no herede las configuraciónes del padre?, saludos.

Heriberto dijo...

Gerson, me pase horas resolviendo eso pero lo encontre =D y aho te va la respuesta.

http://dotnetslackers.com/Security/re-56713_Stopping_ASP_NET_web_config_inheritance.aspx

en el web.config padre con eso basta, a mi me funciona excelente.

Carlos Juan dijo...

Gerson no tenes que hacer nada, solo hace una carpeta dentro site y ya hereda los permisos automaticamente.