禁用web.config继承?

Jos*_*ers 35 asp.net

我在我的网站的根目录中有一个内容管理应用程序,我正在尝试在子文件夹下使用不同的应用程序(计费应用程序).不幸的是,根网站的web.config干扰了子应用程序.

有没有办法只禁用子文件夹的web.config继承?

更新:Stephen Burris链接,使用<location>标记可以阻止部分Web配置的继承,如下所示:

<?xml version="1.0"?>
<configuration>
<configSections>
    ....
</configSections>
<location path="." inheritInChildApplications="false">
    <appSettings>
        ....
    </appSettings>
    <connectionStrings/>
    <system.web>
        ....
    </system.web>
    <system.codedom>
        ....
    </system.codedom>
    <system.webServer>
        ....
    </system.webServer>
</location>
<runtime>
    ....
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

<configSections><runtime>部分将不接受被封装在标签...所以我想这不仅会大部分的工作.谁知道怎么做得更好?

SBu*_*ris 21

您可以在根web.config文件中使用一个属性,以使其内容不会被子应用程序继承.

inheritInChildApplications

有关inheritInChildApplications的博客

有关ASP.NET配置文件层次结构和继承的MSDN文章

将不用于继承的配置部分放在里面

<location inheritInChildApplications="false">
     <NotInheritedConfigPart/>
</location>
Run Code Online (Sandbox Code Playgroud)

配置部分似乎不可能不继承,但配置的其他部分可以像这样"注释"并且不会继承.

  • 这种方法存在问题.您可以在<system.web />中禁用项目的继承,但这对<configSections />部分没有任何作用.有人知道如何禁用<configSections />中项目的继承吗? (3认同)

Mat*_*tta 17

如果您可以使用2个单独的应用程序池,则可以使用enableConfigurationOverride="false"applicationHost.config文件中的attibute完全停止继承,如我在此问题中所述:"条目已添加" - 两个单独的应用程序池

<add name="MyAppPool" enableConfigurationOverride="false" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" >
    <processModel identityType="NetworkService" />
</add>
Run Code Online (Sandbox Code Playgroud)

  • 即使将顶级文件夹转换为具有不同应用程序池的“新应用程序”,也无法在 IIS 10 中使用此方法。子应用程序的设置仍然继承自主应用程序。 (3认同)

Sim*_*ver 8

在我看来,每次我都在努力解决这个问题,答案最终都是有效的 - 我将离开这里,为了我未来的自我,所以他不会再浪费时间了.

当你只是想在现有网站中添加一些虚拟目录时,我发现这是一个很大的问题.使用复杂的web.config文件,我总是最终放弃并将其移动到另一个应用程序.

  • 我无法相信没有办法全局覆盖这个!真是太棒了! (4认同)

dev*_*uff 5

我会明确定义所需的所有设置-永远不要假设任何设置仍设置为默认值。

例如,如果要定义connectionString <clear />,请在<add name=... />,等之前包含一个标记。对于“成员资格”,请定义所有属性,包括cookie名称。等等。

它可能会使文件变大,但绝对可以帮助您避免出现“但它在我的盒子上也起作用”的情况:-)

  • 不完全是我期望的一个好的答案,但也许这是最不坏的选择...... (2认同)