每个配置文件只允许一个configSections元素,如果存在,则必须是根配置元素的第一个子元素。

102

我正在开发控制台应用程序,但当我运行 .exe 文件时,出现以下错误:

system.Configuration.ConfigurationErrorsException: 配置文件中只允许有一个 <configSections> 元素,并且如果存在,则必须是根 <configuration> 元素的第一个子元素。

这是我的 App.config 文件:

<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>
    <configSections>
        <section name="Reva.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <!-- ... -->

然而,如果我删除以下startup部分,则它会正常工作。

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>

2
在德语中,错误信息显示为“**Pro Konfigurationsdatei ist nur ein <configSections>-Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm-<configuration>-Elements sein.**”(以防万一有人正在谷歌这个)。 - Uwe Keim
3个回答

248

错误消息本身实际上详细说明了正确的解决方法:

configSections 必须是根元素的 第一个子元素*:

*强调添加

所以只需将 configSections 移到顶部即可:

<configuration>
    <configSections>
        <section name="Reva.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>
</configuration>

58
今天我学到了应该读完整个错误信息。谢谢。 - Atron Seige
2
@AtronSeige 我也是 :P - Piyey
我在一个Windows服务中收到了相同的错误消息,而且app.config文件中甚至没有"<configSections>"标记。 - mbx
请将您的配置文件发布到Pastebin并在此处提供链接。 - Daniel Hilgarth
2
事实证明,我的配置是正确的,但该机器上的 machine.config 文件已损坏。它甚至包含了一个 SQLExpress/localhost 的连接字符串,尽管该机器从未安装过 SQL。 - mbx
如果你将configSections重新排列为第一个元素,仍然出现相同的错误,则删除“Solution/bin”文件夹中的所有内容,然后重试。 - Kroksys

2

错误的 web.config 文件

 <?xml version="1.0" encoding="utf-8"?>   

<configuration>    
   <connectionStrings>   
      <add name="SQLConnect" 
           connectionString="Data Source=SAHIL; Initial Catalog=Demo; Integrated Security=SSPI" 
           providerName="System.Data.SqlClient" />   
   </connectionStrings>     

   <configSections>   
      <sectionnamesectionname="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, 
          Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
   </configSections>  

   :   
   :   
   :   
   :   
   :   
   :   
   :   
</configuration> 
错误信息如下:

enter image description here

为了解决这个错误,我重新排列了元素,问题得以解决。

enter image description here


1

对于我的情况:

下面的app.config在运行时出现错误:

"ConfigurationErrorsException: Only one <configSections> element allowed per config 
file and if present must be the first child of the root <configuration> element."

错误的 App.config 文件:

<configuration> 
    <appSettings></appSettings>
    <configSections></configSections>   
    <startup> </startup>
    <runtime></runtime>
</configuration>

我只是把 <configSections></configSections> 移到了顶部,问题就解决了。

正确的 App.config

<configuration> 
    <configSections></configSections>
    <appSettings></appSettings>
    <startup> </startup>
    <runtime></runtime>
</configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接