避免在子web应用程序中使用InheritInChild应用程序中的web.config继承

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我想补充一下

<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>

我的子web应用程序是在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>

扫码关注云+社区