Pro Konfigurationsdatei ist nur ein <configSections>-Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm-<configuration>-Elements sein

Folgende Fehlermeldung erscheint beim Zugriff auf ConfigurationManager.AppSettings:

Pro Konfigurationsdatei ist nur ein <configSections>-Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm-<configuration>-Elements sein.

Auf Englisch lautet diese:

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

Lösung

Die Anwendungs-Konfigurationsdatei ist in der falschen Reihenfolge. Das <configSections>-Element muss als allererstes Child von <configuration> kommen, es darf nichts davor stehen.

Beispiel

Falsch:

<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>
    <configSections>
        <section name="log4net" 
                 type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>

(Fehler hier: <startup> vor <configSections>)

Richtig:

<configuration>
    <configSections>
        <section name="log4net" 
                 type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>

(Korrekt: <configSections> vor <startup>)

Lösung von hier