Estoy tratando de agregar
<location inheritInChildApplications="false">
a la aplicación web de mi padre web.config pero no parece estar funcionando.
La de mis padres web.config
tiene:
<configuration>
<configSections>
</configSections>
// 10 or so custom config sections like log4net, hibernate,
<connectionStrings>
</connectionStrings>
<appSettings>
</appSettings>
<system.diagnostics>
</system.diagnostics>
<system.web>
<webParts>
</webParts>
<membership>
</membership>
<compilation>
</compilation>
</system.web>
<location ..>
<system.web>
</system.web>
</location>
<system.webServer>
</system.webServer>
La aplicación web de mi hijo está configurada como una aplicación en IIS y hereda de la de los padres, lo web.config
que está causando problemas.
¿Dónde exactamente debo colocar el
<location inheritInChildApplications="false">
entonces ignora todas las configuraciones de web.config?
fuente
inheritInChildApplications
no se acepta como un parámetro válido para el<location />
elemento. Mi sitio web ejecuta SharePoint (2007). Creé una aplicación en un directorio virtual en este sitio web, administrado por su propio grupo de aplicaciones. Sin embargo, me encuentro con conflictos entre la configuración de SharePoint y esta aplicación. Vea esta pregunta que publiqué en Server Fault.<location>
para el tiempo de ejecución ...Debe ir directamente debajo del
<configuration>
nodo raíz y debe establecer una ruta como esta:Una mejor manera de manejar la herencia de configuración es usar una
<clear/>
configuración secundaria en donde no desee heredar. Entonces, si no desea heredar las cadenas de conexión de la configuración principal, haría algo como esto:fuente
Puse todo en:
excepto:
<configSections/>
,<connectionStrings/>
y<runtime/>
.Hay algunos casos en los que no queremos heredar algunas secciones
<configSections />
, pero no podemos poner<section/>
etiquetas<location/>
, por lo que tenemos que crear ay<secionGroup />
poner nuestras secciones no deseadas en ese grupo. Los grupos de secciones se pueden insertar más tarde en una etiqueta de ubicación.Entonces tenemos que cambiar esto:
Dentro:
fuente
myNotInheritedSections
aef6Private
yunwantedSection
es laentityFramework
sección.<configSections> <sectionGroup name="ef6Private"> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> </configSections> <location path="." inheritInChildApplications="false"> <ef6Private> <entityFramework /> </ef6Private> </location>
Recibimos un error relacionado con esto después de una reciente publicación de código en 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:
recibimos un error de seguimiento de la pila amarilla debido a la introducción de claves duplicadas. Esto se debe a que tanto el web.config para las aplicaciones secundarias como las primarias tenían esta clave. Pero esto existió durante muchos años así sin cambios. ¿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 secundaria hereda los valores web.config de los padres, ignora pares clave / valor idénticos.
Pudimos resolverlo envolviendo la cadena de conexión de esta manera
Editar: Olvidé mencionar que agregué esto en la página web de padres. No tuve que modificar el web.config del niño.
Gracias por la ayuda de todos en esto, salvó nuestros traseros.
fuente
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 grupo de aplicaciones 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
fuente
/preview
para que la gente pueda probar una nueva versión antes de ponerla en funcionamiento. Todo el mundo siempre sugiere<location>
solucionar este problema, así que estaba muy emocionado de leer tu publicación. Sin embargo, se quejaThe entry 'default' has already been added.
por una entrada de configuración relacionada con AppFabric incluso cuando usoenableConfigurationOverride="false"
enableConfigurationOverride="false"
mi aplicación raíz, la elimina por completo y ni siquiera funcionará :-(Esta es la página de microsoft en la
location
etiqueta: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxPuede ser útil para algunas personas.
fuente
Recibimos errores sobre 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 ASP.NET 3.5 principal.
Sin embargo, la web.config global (o "raíz") de la aplicación ASP.NET 4.0, 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.
Luego, la aplicación ASP.NET 4.0 intenta fusionar la raíz ASP.NET 4.0 web.config y la matriz 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 de la web.config principal, y luego
fuente