1. ホーム
  2. asp.net

[解決済み] inheritInChildApplicationsを使用して子Webアプリケーションでweb.configの継承を回避する。

2022-04-24 13:59:42

質問

を追加しようとしています。

<location inheritInChildApplications="false">

を親Webアプリケーションの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" .