net iis7 enable deploy aspx asp application asp.net configuration iis-7 web-config

asp.net - enable - install aspx on iis7



Evite la herencia web.config en la aplicaciĆ³n web hija utilizando inheritInChildApplications (7)

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

<location path="." inheritInChildApplications="false">

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

<!-- disable inheritance for the connectionStrings section --> <location path="." inheritInChildApplications="false"> <connectionStrings> </connectionStrings> </location> <!-- leave inheritance enabled for appSettings --> <appSettings> </appSettings> <!-- disable inheritance for the system.web section --> <location path="." inheritInChildApplications="false"> <system.web> <webParts> </webParts> <membership> </membership> <compilation> </compilation> </system.web> </location>

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

Estoy tratando de agregar

<location inheritInChildApplications="false">

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

La web.config mis padres 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 está heredando del web.config del padre que está causando problemas.

Donde exactamente debería colocar el

<location inheritInChildApplications="false">

¿Ignora todas las configuraciones de web.config?


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 pila 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

<location path="." inheritInChildApplications="false"> <connectionStrings> <!-- Updated connection strings go here --> </connectionStrings> </location>

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.



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)

Puse todo en:

<location path="." inheritInChildApplications="false"> .... </location>

excepto: <configSections/> , <connectionStrings/> y <runtime/> .

Hay algunos casos en los que no queremos heredar algunas secciones de <configSections /> , pero no podemos poner la etiqueta <section/> en <location/> , así que tenemos que crear un <secionGroup /> 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:

<configSections> <section name="unwantedSection" /> </configSections>

Dentro:

<configSections> <sectionGroup name="myNotInheritedSections"> <section name="unwantedSection" /> </sectionGroup> </configSections> <location path="." inheritInChildApplications="false"> <myNotInheritedSections> <unwantedSection /> </myNotInheritedSections> </location>


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:

<add name="MyAppPool" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" enableConfigurationOverride="false"> <processModel identityType="NetworkService" /> </add>

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

Matteo


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

<?xml version="1.0"?> <configuration> <location path="." inheritInChildApplications="false"> <!-- Stuff that shouldn''t be inherited goes in here --> </location> </configuration>

Una mejor forma de manejar la herencia de configuración es usar <clear/> 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:

<?xml version="1.0"?> <configuration> <connectionStrings> <clear/> <!-- Child config''s connection strings --> </connectionStrings> </configuration>