如何防止“configSections”的web.config文件继承?

时间:2010-10-27 07:32:49

标签: c# asp.net visual-studio visual-studio-2010

我在我的父网络应用程序配置文件中有以下内容

<configuration>
  <configSections>
    <sectionGroup name="testmodule">
      <section name="testmodule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
    </sectionGroup>
  </configSections>
</configuration>

我想阻止子子文件夹继承此配置部分应放在哪里 <location path="." inheritInChildApplications="false">,因为配置节应该是配置文件的第一个子元素

5 个答案:

答案 0 :(得分:10)

在SO上已经回答了几次,但我认为不正确。

文档很清楚(1)(2):

  

以下示例显示了如何使用   配置文件中的此属性   指定定义的设置   在根的location元素中   不应继承网站的内容   通过子申请:

     

     

InheritInChildApplications   财产仅适用于   特定于位置的配置   设置。

要回答你的问题,这应该足够了:

<configuration>
...
<sectionGroup name="testmodule">
    <section name="testmodule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
</sectionGroup>
...
<location path="." inheritInChildApplications="false">
    <testModule>
    ....
    </testModule>
</location>

(1) - http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.inheritinchildapplications.aspx

(2) - http://msdn.microsoft.com/en-us/library/ms178692.aspx

答案 1 :(得分:6)

目前似乎没有解决方案,应该避免在web.config文件中使用冲突的部分组。

答案 2 :(得分:1)

如果在冲突的子节中使用不同的名称,它将不会与父节点冲突,您可以使用不同的名称引用它们各自的web.config文件中的两个节。

它并不完美,但它是一个成功使用的工作....

答案 3 :(得分:0)

我们在其中一个应用上遇到有关重复配置指令的错误。 经过调查后,它看起来像是this issue

简而言之,我们的根网站是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中删除配置部分,然后

  1. 确定您的根应用程序中不需要它们,或
  2. 将父应用程序升级到ASP.NET 4.0(以便它可以访问根web.config的configSections)

答案 4 :(得分:0)

我的情况与您的情况相同,因为我的根应用程序正在使用.net 2.0的AppPool,而子AppPool是.Net 4.0。我使用"Entry has already been added" - Two Separate App Pools中的建议,通过将两个AppPools设置为enableConfigurationOverride =&#34; false&#34;它就像一个魅力。