추가하려고합니다
<location inheritInChildApplications="false">
부모 웹 응용 프로그램의 web.config에 있지만 작동하지 않는 것 같습니다.
부모님 web.config
은 :
<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>
내 자식 웹 응용 프로그램은 IIS에서 응용 프로그램으로 설정되어 있으며 부모 응용 프로그램에서 상속되어 web.config
문제가 발생했습니다.
정확히 어디에 배치해야합니까?
<location inheritInChildApplications="false">
다양한 web.config 설정을 모두 무시합니까?
답변
이전 답변에 대한 주석 작성자가 언급했듯이 단순히 행을 추가 할 수는 없습니다 …
<location path="." inheritInChildApplications="false">
… 바로 아래 <configuration>
. 대신 상속을 비활성화하려는 개별 web.config 섹션을 래핑해야합니다. 예를 들면 다음과 같습니다.
<!-- 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>
<clear />
일부 구성 섹션에서는 작동 할 수 있지만 일부는 <remove name="...">
지시문을 필요로 하지만 일부는 지원하지 않는 것 같습니다. 이러한 상황에서는을 설정하는 것이 inheritInChildApplications="false"
좋습니다.
답변
루트 <configuration>
노드 바로 아래로 이동 해야하며 다음과 같은 경로를 설정해야합니다.
<?xml version="1.0"?>
<configuration>
<location path="." inheritInChildApplications="false">
<!-- Stuff that shouldn't be inherited goes in here -->
</location>
</configuration>
구성 상속을 처리하는 더 좋은 방법 <clear/>
은 하위 구성에서 상속하지 않으려 는 위치를 사용하는 것 입니다. 따라서 부모 설정의 연결 문자열을 상속하지 않으려면 다음과 같이하십시오.
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<clear/>
<!-- Child config's connection strings -->
</connectionStrings>
</configuration>
답변
나는 모든 것을 넣었다.
<location path="." inheritInChildApplications="false">
....
</location>
다음을 제외 <configSections/>
, <connectionStrings/>
하고 <runtime/>
.
거기에서 우리는 일부 secions을 상속하지 않으려는 경우가 있습니다 <configSections />
,하지만 우리는 넣을 수 없습니다 <section/>
에 태그를 <location/>
우리가를 생성해야하므로, <secionGroup />
해당 그룹에 우리의 원치 않는 부분을 넣어. 섹션 그룹은 나중에 위치 태그에 삽입 될 수 있습니다.
따라서 이것을 변경해야합니다.
<configSections>
<section name="unwantedSection" />
</configSections>
으로:
<configSections>
<sectionGroup name="myNotInheritedSections">
<section name="unwantedSection" />
</sectionGroup>
</configSections>
<location path="." inheritInChildApplications="false">
<myNotInheritedSections>
<unwantedSection />
</myNotInheritedSections>
</location>
답변
개발 환경 중 하나에 최근 코드를 릴리스 한 후 이와 관련된 오류가 발생했습니다. 다른 응용 프로그램의 자식 인 응용 프로그램이 있습니다. 이 관계는 어제까지 몇 년 동안 잘 작동했습니다.
문제 :
중복 키를 입력하여 노란색 스택 추적 오류가 발생했습니다. 하위 및 상위 애플리케이션에 대한 web.config에 모두이 키가 있기 때문입니다. 그러나 이것은 몇 년 동안 변화없이 존재했습니다. 왜 갑자기 문제가 발생합니까?
해결책 :
이것이 결코 문제가되지 않은 이유는 키와 값이 항상 동일했기 때문입니다. 어제 연결 문자열에 응용 프로그램 이름을 포함하도록 SQL 연결 문자열을 업데이트했습니다. 이것은 문자열을 독특하게 만들고 갑자기 실패하기 시작했습니다.
이것에 대한 정확한 이유에 대한 연구를하지 않고 자식 응용 프로그램이 부모 web.config 값을 상속하면 동일한 키 / 값 쌍을 무시한다고 가정해야합니다.
우리는 다음과 같이 연결 문자열을 감싸서 해결할 수있었습니다.
<location path="." inheritInChildApplications="false">
<connectionStrings>
<!-- Updated connection strings go here -->
</connectionStrings>
</location>
편집 : PARENTS web.config에 이것을 추가했다는 것을 잊었습니다. 자식의 web.config를 수정할 필요가 없었습니다.
모든 사람들이 이것에 도움을 주셔서 감사합니다.
답변
하위 응용 프로그램의 웹 구성에서 상속을 완전히 차단하려는 경우 web.config에서 태그를 사용하지 않는 것이 좋습니다. 대신 새 apppool을 만들고 applicationHost.config 파일 (% WINDIR % \ System32 \ inetsrv \ Config 및 % WINDIR % \ SysWOW64 \ inetsrv \ config에 있음)을 편집하십시오. apppool의 항목을 찾아 enableConfigurationOverride="false"
다음 예제와 같이 속성을 추가하면됩니다 .
<add name="MyAppPool" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" enableConfigurationOverride="false">
<processModel identityType="NetworkService" />
</add>
MyAppPool에서 제공하는 응용 프로그램의 구성 상속을 피할 수 있습니다.
마테오
답변
이 location
태그 는 Microsoft의 페이지입니다 : http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspx
일부 사람들에게 도움이 될 수 있습니다.
답변
앱 중 하나에서 중복 구성 지시문에 대한 오류가 발생합니다. 조사 후이 문제로 인한 것 같습니다 .
간단히 말해 루트 웹 사이트는 ASP.NET 3.5 (특정 라이브러리가 추가 된 2.0)이며 ASP.NET 4.0이라는 하위 응용 프로그램이 있습니다.
web.config 상속으로 인해 ASP.NET 4.0 하위 응용 프로그램은 부모 ASP.NET 3.5 응용 프로그램의 web.config 파일을 상속합니다.
그러나 ASP.NET 4.0 응용 프로그램의 전역 (또는 “루트”) web.config는 C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config 및 C : \ Windows \ Microsoft에 있습니다. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (비트에 따라 다름)에는 이미 이러한 구성 섹션이 포함되어 있습니다.
그런 다음 ASP.NET 4.0 앱은 루트 ASP.NET 4.0 web.config와 부모 web.config (ASP.NET 3.5 앱용)를 병합하려고 시도하고 노드에서 복제본으로 실행됩니다.
내가 찾은 유일한 해결책은 부모 web.config에서 구성 섹션을 제거 한 다음
- 루트 응용 프로그램에서 필요하지 않은지 또는 필요한지 확인하십시오.
- 부모 응용 프로그램을 ASP.NET 4.0으로 업그레이드하여 루트 web.config의 configSections에 액세스합니다.