Próbuję dodać
<location inheritInChildApplications="false">
do pliku web.config mojej nadrzędnej aplikacji internetowej, ale wygląda na to, że nie działa.
Moi rodzice web.config
mają:
<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>
Moja podrzędna aplikacja internetowa jest skonfigurowana jako aplikacja w usługach IIS i dziedziczy po aplikacji rodzica, web.config
która powoduje problemy.
Gdzie dokładnie powinienem umieścić plik
<location inheritInChildApplications="false">
więc ignoruje wszystkie różne ustawienia web.config?
źródło
inheritInChildApplications
nie jest akceptowany jako prawidłowy parametr<location />
elementu. W mojej witrynie internetowej działa program SharePoint (2007). Stworzyłem aplikację w wirtualnym katalogu na tej stronie, zarządzanym przez własną pulę aplikacji. Jednak napotykam konflikty między konfiguracją SharePoint a tą aplikacją. Zobacz to pytanie, które opublikowałem w sekcji Błąd serwera.<location>
do uruchamiania ...Musi przejść bezpośrednio pod
<configuration>
węzeł główny i musisz ustawić taką ścieżkę:Lepszym sposobem obsługi dziedziczenia konfiguracji jest użycie
<clear/>
w konfiguracji podrzędnej wszędzie tam, gdzie nie chcesz dziedziczyć. Więc jeśli nie chcesz dziedziczyć parametrów połączenia konfiguracji nadrzędnej, zrobiłbyś coś takiego:źródło
Włożyłem wszystko w:
z wyjątkiem:
<configSections/>
,<connectionStrings/>
i<runtime/>
.Są przypadki, w których nie chcemy dziedziczyć niektórych sekcji z
<configSections />
, ale nie możemy wstawić<section/>
tagu<location/>
, więc musimy utworzyć<secionGroup />
i umieścić nasze niechciane sekcje w tej grupie. Grupy sekcji można później wstawić do znacznika lokalizacji.Więc musimy to zmienić:
W:
źródło
myNotInheritedSections
do sekcjief6Private
iunwantedSection
jestentityFramework
.<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>
Otrzymaliśmy błąd związany z tym po ostatnim wydaniu kodu w jednym z naszych środowisk programistycznych. Mamy aplikację, która jest dzieckiem innej aplikacji. Ten związek działał dobrze przez LATA aż do wczoraj.
Problem:
otrzymywaliśmy żółty błąd śledzenia stosu z powodu wprowadzenia zduplikowanych kluczy. Dzieje się tak, ponieważ zarówno plik web.config dla aplikacji podrzędnej, jak i nadrzędnej miał ten klucz. Ale to istniało przez wiele lat bez zmian. Dlaczego nagle teraz jest to problem?
Rozwiązanie:
nigdy nie stanowiło to problemu, ponieważ klucze AND były zawsze takie same. Wczoraj zaktualizowaliśmy nasze parametry połączenia SQL, aby uwzględnić nazwę aplikacji w parametrach połączenia. To sprawiło, że struna była wyjątkowa i nagle zaczęła zawodzić.
Nie szukając dokładnej przyczyny takiego stanu rzeczy, muszę założyć, że gdy aplikacja podrzędna dziedziczy wartości z pliku web.config nadrzędnego, ignoruje identyczne pary klucz / wartość.
Udało nam się to rozwiązać, opakowując parametry połączenia w ten sposób
Edycja: zapomniałem wspomnieć, że dodałem to w web.config RODZICÓW. Nie musiałem modyfikować pliku web.config dziecka.
Dzięki za pomoc wszystkim, uratowaliśmy nasze tyłki.
źródło
Jeśli (jak rozumiem) próbujesz całkowicie zablokować dziedziczenie w konfiguracji internetowej swojej aplikacji podrzędnej, sugeruję unikanie używania tagu w pliku web.config. Zamiast tego utwórz nową pulę aplikacji i edytuj plik applicationHost.config (znajdujący się w% WINDIR% \ System32 \ inetsrv \ Config i% WINDIR% \ SysWOW64 \ inetsrv \ config). Musisz tylko znaleźć wpis dla swojej puli aplikacji i dodać atrybut
enableConfigurationOverride="false"
jak w poniższym przykładzie:Pozwoli to uniknąć dziedziczenia konfiguracji w aplikacjach obsługiwanych przez MyAppPool.
Matteo
źródło
/preview
aby ludzie mogli przetestować nową wersję przed uruchomieniem. Każdy zawsze sugeruje<location>
rozwiązanie tego problemu, więc byłem bardzo podekscytowany, aby przeczytać Twój post. Jednak skarży sięThe entry 'default' has already been added.
na wpis konfiguracji związany z AppFabric, nawet gdy używamenableConfigurationOverride="false"
enableConfigurationOverride="false"
To jest strona firmy Microsoft w
location
tagu: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxMoże to być pomocne dla niektórych osób.
źródło
Otrzymujemy błędy dotyczące zduplikowanych dyrektyw konfiguracyjnych w jednej z naszych aplikacji. Po zbadaniu wygląda na to, że jest to spowodowane tym problemem .
W skrócie, nasza główna witryna sieci Web to ASP.NET 3.5 (czyli 2.0 z dodanymi określonymi bibliotekami), a my mamy aplikację podrzędną, która jest ASP.NET 4.0.
Dziedziczenie pliku web.config powoduje, że podaplikacja ASP.NET 4.0 dziedziczy plik web.config nadrzędnej aplikacji ASP.NET 3.5.
Jednak globalny (lub „główny”) plik web.config aplikacji ASP.NET 4.0, który znajduje się w C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config i C: \ Windows \ Microsoft. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (w zależności od twojej bitness) już zawiera te sekcje konfiguracyjne.
Następnie aplikacja ASP.NET 4.0 próbuje scalić ze sobą główny ASP.NET 4.0 web.config i nadrzędny web.config (ten dla aplikacji ASP.NET 3.5) i działa jako duplikaty w węźle.
Jedynym rozwiązaniem, jakie udało mi się znaleźć, jest usunięcie sekcji konfiguracyjnych z nadrzędnego pliku web.config, a następnie jednego z nich
źródło