Apenas um elemento configSections permitido por arquivo de configuração e, se presente, deve ser o primeiro filho do elemento de configuração raiz

91

Estou desenvolvendo o aplicativo de console e quando executo o arquivo .exe, recebo o seguinte erro:

system.Configuration.ConfigurationErrorsException: Apenas um <configSections>elemento é permitido por arquivo de configuração e, se presente, deve ser o primeiro filho do <configuration>elemento raiz .

Aqui está meu App.configarquivo:

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

No entanto, se eu remover a startupseção a seguir , ela funcionará bem

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>
Mahesh
fonte
1
Em alemão, a mensagem de erro é " Pro Konfigurationsdatei ist nur ein <configSections> -Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm- <configuration> -Elements sein. " (Por precaução, alguém está pesquisando este aqui )
Uwe Keim

Respostas:

223

A própria mensagem de erro realmente detalha a correção correta:

configSectionsdeve ser o primeiro filho * do elemento raiz:

*enfase adicionada

Então, basta mover configSectionspara o topo:

<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>
Daniel Hilgarth
fonte
54
Hoje aprendi que deveria ler toda a mensagem de erro. Obrigado.
Atron Seige
1
@AtronSeige eu também: P
Piyey
Recebi a mesma mensagem de erro para um serviço do Windows e o app.config nem mesmo tem uma tag "<configSections>".
mbx
Por favor, poste sua configuração no pastebin e faça um link aqui
Daniel Hilgarth
2
No final das contas, minha configuração estava OK, mas o machine.config naquela máquina estava quebrado. Ele ainda continha uma string de conexão SQLExpress / localhost, embora nenhum SQL tenha sido instalado nessa máquina.
mbx
2

O arquivo de erro 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> 

O erro foi

insira a descrição da imagem aqui

Para corrigir o erro, reorganizei os elementos e o erro foi corrigido.

insira a descrição da imagem aqui

MAFAIZ
fonte