J'essaye d'ajouter
<location inheritInChildApplications="false">
au web.config de mon application Web parente, mais cela ne semble pas fonctionner.
Mes parents web.config
ont:
<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>
Mon application Web enfant est configurée en tant qu'application dans IIS et hérite de celle du parent, web.config
ce qui pose des problèmes.
Où dois-je placer exactement le
<location inheritInChildApplications="false">
donc il ignore tous les différents paramètres web.config?
la source
inheritInChildApplications
n'est pas accepté comme paramètre valide pour l'<location />
élément. Mon site Web utilise SharePoint (2007). J'ai créé une application dans un répertoire virtuel sous ce site Web, géré par son propre pool d'applications. Pourtant, je rencontre des conflits entre la configuration de SharePoint et cette application. Voir cette question que j'ai postée dans Server Fault.<location>
pour l'exécution ...Il doit aller directement sous le
<configuration>
nœud racine et vous devez définir un chemin comme celui-ci:Une meilleure façon de gérer l'héritage de configuration est d'utiliser a
<clear/>
dans la configuration enfant là où vous ne voulez pas hériter. Donc, si vous ne vouliez pas hériter des chaînes de connexion de la configuration parent, vous feriez quelque chose comme ceci:la source
J'ai tout mis dans:
sauf:
<configSections/>
,<connectionStrings/>
et<runtime/>
.Il y a des cas où nous ne voulons pas hériter de certaines sections
<configSections />
, mais nous ne pouvons pas y insérer de<section/>
balise<location/>
, nous devons donc créer un<secionGroup />
et placer nos sections indésirables dans ce groupe. Les groupes de sections peuvent être insérés ultérieurement dans une balise d'emplacement.Nous devons donc changer cela:
Dans:
la source
myNotInheritedSections
pouref6Private
etunwantedSection
est laentityFramework
section.<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>
Nous recevions une erreur liée à cela après une récente publication de code dans l'un de nos environnements de développement. Nous avons une application qui est un enfant d'une autre application. Cette relation fonctionne bien depuis des années jusqu'à hier.
Le problème:
nous recevions une erreur de trace de pile jaune en raison de la saisie de clés en double. Cela est dû au fait que le web.config des applications enfant et parent avait cette clé. Mais cela a existé pendant de nombreuses années comme ça sans changement. Pourquoi tout d'un coup c'est un problème maintenant?
La solution:
la raison pour laquelle cela n'a jamais été un problème est que les clés ET les valeurs étaient toujours les mêmes. Hier, nous avons mis à jour nos chaînes de connexion SQL pour inclure le nom de l'application dans la chaîne de connexion. Cela a rendu la chaîne unique et a soudainement commencé à échouer.
Sans faire aucune recherche sur la raison exacte de cela, je dois supposer que lorsque l'application enfant hérite des valeurs web.config des parents, elle ignore les paires clé / valeur identiques.
Nous avons pu le résoudre en enveloppant la chaîne de connexion comme ceci
Edit: j'ai oublié de mentionner que j'ai ajouté ceci dans le web.config de PARENTS. Je n'ai pas eu à modifier le web.config de l'enfant.
Merci pour l'aide de tout le monde à ce sujet, nous avons sauvé nos fesses.
la source
Si (si je comprends bien) vous essayez de bloquer complètement l'héritage dans la configuration Web de votre application enfant, je vous suggère d'éviter d'utiliser la balise dans web.config. Créez plutôt un nouveau pool d'applications et modifiez le fichier applicationHost.config (situé dans% WINDIR% \ System32 \ inetsrv \ Config et% WINDIR% \ SysWOW64 \ inetsrv \ config). Il vous suffit de trouver l'entrée de votre apppool et d'ajouter l'attribut
enableConfigurationOverride="false"
comme dans l'exemple suivant:Cela évitera l'héritage de configuration dans les applications servies par MyAppPool.
Matteo
la source
/preview
les gens à l'essai une nouvelle version avant de la mettre en ligne. Tout le monde suggère toujours<location>
de résoudre ce problème, j'étais donc très heureux de lire votre message. Cependant, il se plaintThe entry 'default' has already been added.
d'une entrée de configuration liée à AppFabric même lorsque j'utiliseenableConfigurationOverride="false"
enableConfigurationOverride="false"
sur mon application racine, cela tue complètement l'application racine et cela ne fonctionnera même pas :-(Voici la page de Microsoft sur la
location
balise: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxCela peut être utile à certaines personnes.
la source
Nous obtenons des erreurs concernant les directives de configuration en double sur l'une de nos applications. Après enquête, il semble que ce soit à cause de ce problème .
En bref, notre site Web racine est ASP.NET 3.5 (qui est 2.0 avec des bibliothèques spécifiques ajoutées), et nous avons une sous-application qui est ASP.NET 4.0.
L'héritage web.config oblige la sous-application ASP.NET 4.0 à hériter du fichier web.config de l'application ASP.NET 3.5 parente.
Cependant, web.config global (ou "racine") de l'application ASP.NET 4.0, qui réside dans C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config et C: \ Windows \ Microsoft. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (en fonction de votre bitness), contient déjà ces sections de configuration.
L'application ASP.NET 4.0 essaie ensuite de fusionner le web.config ASP.NET 4.0 racine et le web.config parent (celui d'une application ASP.NET 3.5) et s'exécute en doublons dans le nœud.
La seule solution que j'ai pu trouver est de supprimer les sections de configuration du web.config parent, puis soit
la source