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

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

   

我想阻止子子文件夹inheritance此配置部分,我应该在哪里放置 ,因为配置节应该是配置文件的第一个子元素

在SO上已经回答了几次,但在我看来这是错误的。

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

以下示例说明如何在配置文件中使用此属性,以指定子应用程序不应inheritance在网站根目录的location元素中定义的设置:

InheritInChildApplications属性仅适用于特定于位置的配置设置。

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

  ...  
... ....

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

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

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

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

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

我们在其中一个应用程序上遇到有关重复配置指令的错误。 经过调查,它看起来像是因为这个问题 。

简而言之,我们的根网站是ASP.NET 3.5(添加了特定库的2.0),我们有一个ASP.NET 4.0的子应用程序。

web.configinheritance导致ASP.NET 4.0子应用程序inheritance父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)

我的情况与你的情况相同,因为我的根应用程序正在使用.net 2.0的AppPool,而子AppPool是.Net 4.0。 我使用“条目已添加”中的建议解决了- 两个单独的应用程序池 ,通过将两个AppPools设置为enableConfigurationOverride =“false”,它就像一个魅力。