Un seul élément configSections autorisé par fichier de configuration et s'il est présent, il doit être le premier enfant de l'élément de configuration racine

91

Je développe l'application console et lorsque j'exécute le fichier .exe, j'obtiens l'erreur suivante:

system.Configuration.ConfigurationErrorsException: Un seul <configSections>élément autorisé par fichier de configuration et s'il est présent doit être le premier enfant de l' <configuration>élément racine .

Voici mon App.configdossier:

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

Cependant, si je supprime la startupsection suivante , cela fonctionne bien

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>
Mahesh
la source
1
En allemand, le message d'erreur se lit comme suit: " Pro Konfigurationsdatei ist nur ein <configSections> -Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm- <configuration> -Elements sein. " (Juste au cas où quelqu'un googlerait celui-ci ).
Uwe Keim

Réponses:

223

Le message d'erreur lui-même détaille en fait le correctif correct:

configSectionsdoit être le premier enfant * de l'élément racine:

* emphase ajoutée

Alors déplacez simplement le configSectionsvers le haut:

<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
la source
54
Aujourd'hui, j'ai appris que je devais lire tout le message d'erreur. Merci.
Atron Seige
1
@AtronSeige moi aussi: P
Piyey
J'ai le même message d'erreur pour un service Windows et le app.config ne contient même pas de balise "<configSections>".
mbx
Veuillez poster votre configuration sur pastebin et
liez-la
2
Il s'est avéré que ma configuration était correcte mais le machine.config sur cette machine était cassé. Il contenait même une chaîne de connexion SQLExpress / localhost bien qu'aucun SQL n'ait jamais été installé sur cette machine.
mbx
2

Le fichier d'erreur 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> 

L'erreur était

entrez la description de l'image ici

Pour corriger l'erreur, j'ai réorganisé les éléments et l'erreur a été corrigée.

entrez la description de l'image ici

MAFAIZ
la source