Ich versuche hinzuzufügen
<location inheritInChildApplications="false">
auf die web.config meiner übergeordneten Webanwendung, aber es scheint nicht zu funktionieren.
Meine Eltern web.config
haben:
<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>
Meine untergeordnete Webanwendung wird als Anwendung in IIS eingerichtet und erbt von der übergeordneten Anwendung, web.config
was zu Problemen führt.
Wo genau soll ich das platzieren
<location inheritInChildApplications="false">
ignoriert es also alle verschiedenen web.config Einstellungen?
quelle
inheritInChildApplications
wird nicht als gültiger Parameter für das<location />
Element akzeptiert . Auf meiner Website wird SharePoint (2007) ausgeführt. Ich habe eine Anwendung in einem virtuellen Verzeichnis unter dieser Website erstellt, das von einem eigenen Anwendungspool verwaltet wird. Es treten jedoch Konflikte zwischen der SharePoint-Konfiguration und dieser Anwendung auf. Siehe diese Frage, die ich in Serverfehler gepostet habe.<location>
für die Laufzeit verwenden ...Es muss direkt unter dem
<configuration>
Stammknoten liegen und Sie müssen einen Pfad wie folgt festlegen:Eine bessere Möglichkeit, die Konfigurationsvererbung zu handhaben, besteht darin, eine
<clear/>
in der untergeordneten Konfiguration zu verwenden, wo immer Sie nicht erben möchten. Wenn Sie also die Verbindungszeichenfolgen der übergeordneten Konfiguration nicht erben möchten, gehen Sie folgendermaßen vor:quelle
Ich habe alles in:
ausgenommen:
<configSections/>
,<connectionStrings/>
und<runtime/>
.Es gibt einige Fälle, in denen wir einige Abschnitte nicht erben möchten
<configSections />
, aber kein<section/>
Tag einfügen können. Daher<location/>
müssen wir ein erstellen<secionGroup />
und unsere unerwünschten Abschnitte in diese Gruppe einfügen . Abschnittsgruppen können später in ein Standort-Tag eingefügt werden.Also müssen wir das ändern:
In:
quelle
myNotInheritedSections
zuef6Private
undunwantedSection
ist derentityFramework
Abschnitt.<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>
Wir haben diesbezüglich einen Fehler erhalten, nachdem kürzlich Code für eine unserer Entwicklungsumgebungen veröffentlicht wurde. Wir haben eine Anwendung, die einer anderen Anwendung untergeordnet ist. Diese Beziehung hat seit JAHREN bis gestern gut funktioniert.
Das Problem:
Wir haben einen gelben Stapelverfolgungsfehler erhalten, weil doppelte Schlüssel eingegeben wurden. Dies liegt daran, dass sowohl die web.config für die untergeordnete als auch die übergeordnete Anwendung diesen Schlüssel hatte. Aber das gab es viele Jahre lang unverändert. Warum ist es jetzt plötzlich ein Problem?
Die Lösung:
Der Grund, warum dies nie ein Problem war, ist, dass die Schlüssel UND-Werte immer gleich waren. Gestern haben wir unsere SQL-Verbindungszeichenfolgen aktualisiert, um den Anwendungsnamen in die Verbindungszeichenfolge aufzunehmen. Dies machte die Saite einzigartig und begann plötzlich zu versagen.
Ohne den genauen Grund dafür zu untersuchen, muss ich davon ausgehen, dass die untergeordnete Anwendung, wenn sie die web.config-Werte der Eltern erbt, identische Schlüssel / Wert-Paare ignoriert.
Wir konnten es lösen, indem wir die Verbindungszeichenfolge so umschlossen
Bearbeiten: Ich habe vergessen zu erwähnen, dass ich dies in der PARENTS web.config hinzugefügt habe. Ich musste die web.config des Kindes nicht ändern.
Vielen Dank für jedermanns Hilfe, rettete unseren Hintern.
quelle
Wenn Sie (soweit ich weiß) versuchen, die Vererbung in der Webkonfiguration Ihrer untergeordneten Anwendung vollständig zu blockieren, sollten Sie die Verwendung des Tags in web.config vermeiden. Erstellen Sie stattdessen einen neuen Apppool und bearbeiten Sie die Datei applicationHost.config (in% WINDIR% \ System32 \ inetsrv \ Config und% WINDIR% \ SysWOW64 \ inetsrv \ config). Sie müssen nur den Eintrag für Ihren Apppool finden und das Attribut
enableConfigurationOverride="false"
wie im folgenden Beispiel hinzufügen :Dadurch wird die Vererbung der Konfiguration in den von MyAppPool bereitgestellten Anwendungen vermieden.
Matteo
quelle
/preview
eine neue Version zu testen, bevor sie live geschaltet wird. Jeder schlägt immer vor<location>
, dieses Problem zu beheben, daher war ich sehr gespannt auf Ihren Beitrag. Es beschwert sich jedochThe entry 'default' has already been added.
für einen AppFabric-bezogenen Konfigurationseintrag, selbst wenn ichenableConfigurationOverride="false"
enableConfigurationOverride="false"
meine Root-Anwendung einstelle, wird die Root-Anwendung vollständig beendet und es funktioniert nicht einmal :-(Dies ist die Microsoft-Seite auf dem
location
Tag: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxEs kann für einige Leute hilfreich sein.
quelle
Wir erhalten Fehler bezüglich doppelter Konfigurationsanweisungen für eine unserer Apps. Nach der Untersuchung sieht es so aus, als ob es an diesem Problem liegt .
Kurz gesagt, unsere Stammwebsite ist ASP.NET 3.5 (2.0 mit bestimmten hinzugefügten Bibliotheken), und wir haben eine Unteranwendung, die ASP.NET 4.0 ist.
Die Vererbung von web.config bewirkt, dass die ASP.NET 4.0-Unteranwendung die Datei web.config der übergeordneten ASP.NET 3.5-Anwendung erbt.
Die globale (oder "root") web.config der ASP.NET 4.0-Anwendung befindet sich jedoch unter C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config und C: \ Windows \ Microsoft. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (abhängig von Ihrer Bitness) enthält diese Konfigurationsabschnitte bereits.
Die ASP.NET 4.0-App versucht dann, die Stamm-ASP.NET 4.0-Datei web.config und die übergeordnete web.config (die für eine ASP.NET 3.5-App) zusammenzuführen, und führt im Knoten auf Duplikate.
Die einzige Lösung, die ich finden konnte, besteht darin, die Konfigurationsabschnitte aus der übergeordneten web.config zu entfernen
quelle