Evite la herencia web.config en la aplicación web hija utilizando inheritInChildApplications

Estoy tratando de agregar

 

a la aplicación web principal web.config pero parece no estar funcionando.

La web.config mis padres tiene:

    // 10 or so custom config sections like log4net, hibernate,                     

La aplicación web de mi hijo está configurada como una aplicación en IIS y está heredando del web.config del padre que está causando problemas.

Donde exactamente debería colocar el

  

¿Ignora todas las configuraciones de web.config?

Como comentaron los comentaristas de la respuesta anterior, no puedes simplemente agregar la línea …

  

… justo debajo de . En su lugar, debe ajustar las secciones web.config individuales para las que desea deshabilitar la herencia. Por ejemplo:

                    

Mientras que puede funcionar para algunas secciones de configuración, hay algunas que requieren una directiva , y otras no parecen ser compatibles. En estas situaciones, probablemente sea apropiado establecer inheritInChildApplications="false" .

Tiene que ir directamente debajo del nodo raíz y debe establecer una ruta como esta:

       

Una mejor forma de manejar la herencia de configuración es usar en la configuración secundaria donde no desee heredar. Entonces, si no quieres heredar las cadenas de conexión de la configuración principal, harías algo como esto:

        

Puse todo en:

  ....  

excepto: , y .

Hay algunos casos en los que no queremos heredar algunas secciones de , pero no podemos poner la etiqueta

en , así que tenemos que crear un y poner nuestro secciones no deseadas en ese grupo. Los grupos de sección pueden insertarse más tarde en una etiqueta de ubicación.

Entonces tenemos que cambiar esto:

  

Dentro:

   

Estábamos obteniendo un error relacionado con esto después de un lanzamiento reciente de código a uno de nuestros entornos de desarrollo. Tenemos una aplicación que es hija de otra aplicación. Esta relación ha estado funcionando bien durante AÑOS hasta ayer.

El problema:
Obtuvimos un error de seguimiento de la stack amarilla debido a la introducción de claves duplicadas. Esto se debe a que tanto el web.config para las aplicaciones secundarias como para las primarias tienen esta clave. Pero esto existió durante muchos años como este sin cambio. ¿Por qué de repente es un problema ahora?

La solución:
La razón por la que esto nunca fue un problema es porque las claves Y los valores siempre fueron los mismos. Ayer actualizamos nuestras cadenas de conexión SQL para incluir el Nombre de la aplicación en la cadena de conexión. Esto hizo que la cadena fuera única y de repente comenzó a fallar.

Sin hacer ninguna investigación sobre el motivo exacto de esto, debo suponer que cuando la aplicación hija hereda los valores web.config de los padres, ignora los pares clave / valor idénticos.

Pudimos resolverlo envolviendo la cadena de conexión como esta

       

Editar: Olvidé mencionar que agregué esto en el sitio web para padres .config. No tuve que modificar el web.config del niño.

Gracias a todos por su ayuda en esto, nos salvó las colillas.

Si (según tengo entendido) está intentando bloquear completamente la herencia en la configuración web de su aplicación secundaria, le sugiero que evite usar la etiqueta en web.config. En su lugar, cree un nuevo grupo de aplicaciones y edite el archivo applicationHost.config (ubicado en% WINDIR% \ System32 \ inetsrv \ Config y% WINDIR% \ SysWOW64 \ inetsrv \ config). Solo tiene que encontrar la entrada para su apppool y agregar el atributo enableConfigurationOverride="false" como en el siguiente ejemplo:

    

Esto evitará la herencia de configuración en las aplicaciones servidas por MyAppPool.

Matteo

Esta es la página de Microsoft en la etiqueta de location : http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspx

Puede ser útil para algunas personas.

Estamos recibiendo errores sobre las directivas de configuración duplicadas en una de nuestras aplicaciones. Después de la investigación, parece que se debe a este problema .

En resumen, nuestro sitio web raíz es ASP.NET 3.5 (que es 2.0 con bibliotecas específicas agregadas), y tenemos una subaplicación que es ASP.NET 4.0.

La herencia web.config hace que la sub-aplicación ASP.NET 4.0 herede el archivo web.config de la aplicación principal ASP.NET 3.5.

Sin embargo, la aplicación global ASP.NET 4.0 (o “raíz”) web.config, que reside en C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config y C: \ Windows \ Microsoft. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (dependiendo de su bitness), ya contiene estas secciones de configuración.

La aplicación ASP.NET 4.0 intenta fusionar la raíz ASP.NET 4.0 web.config y la principal web.config (la de una aplicación ASP.NET 3.5) y se ejecuta en duplicados en el nodo.

La única solución que he podido encontrar es eliminar las secciones de configuración del web.config principal, y luego

  1. Determine que no los necesitaba en su aplicación raíz, o si lo hace
  2. Actualice la aplicación principal a ASP.NET 4.0 (para que pueda acceder a la raíz de las secciones de configuración de web.config)