Solo se permite un elemento configSections por archivo de configuración y, si está presente, debe ser el primer elemento secundario del elemento de configuración raíz

92

Estoy desarrollando la aplicación de consola y cuando ejecuto el archivo .exe, aparece el siguiente error:

system.Configuration.ConfigurationErrorsException: Solo se <configSections>permite un elemento por archivo de configuración y, si está presente, debe ser el primer elemento secundario del <configuration>elemento raíz .

Aquí está mi App.configarchivo:

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

Sin embargo, si elimino la siguiente startupsección, entonces funciona bien

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>
Mahesh
fuente
1
En alemán, el mensaje de error dice " Pro Konfigurationsdatei ist nur ein <configSections> -Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm- <configuration> -Elements sein. " (Por si acaso, alguien está buscando en Google este ).
Uwe Keim

Respuestas:

223

El mensaje de error en sí mismo detalla la solución correcta:

configSectionsdebe ser el primer hijo * del elemento raíz:

*énfasis añadido

Así que solo mueve el configSectionsa la parte superior:

<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
fuente
54
Hoy aprendí que debería leer todo el mensaje de error. Gracias.
Atron Seige
1
@AtronSeige yo también: P
Piyey
Recibí el mismo mensaje de error para un servicio de Windows y app.config ni siquiera tiene una etiqueta "<configSections>".
mbx
Publique su configuración en pastebin y vincúlela aquí
Daniel Hilgarth
2
Resultó que mi configuración estaba bien, pero el archivo machine.config en esa máquina estaba roto. Incluso contenía una cadena de conexión SQLExpress / localhost, aunque nunca se instaló SQL en esa máquina.
mbx
2

El archivo web.config de error

 <?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> 

El error fue

ingrese la descripción de la imagen aquí

Para corregir el error, reorganicé los elementos y se solucionó el error.

ingrese la descripción de la imagen aquí

MAFAIZ
fuente