У кожному файлі конфігурації допускається лише один елемент configSections, і якщо він присутній, він повинен бути першим дочірнім елементом кореневого конфігураційного елемента


91

Я розробляю консольний додаток, і під час запуску файлу .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>

1
На німецькій мові повідомлення про помилку звучить " Pro Konfigurationsdatei ist nur ein <configSections> -Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm- <configuration> -Elements sein. " (Про всяк випадок хтось погуглив цей) ).
Уве Кейм,

Відповіді:


223

Повідомлення про помилку фактично описує правильне виправлення:

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>

54
Сьогодні я дізнався, що повинен прочитати ціле повідомлення про помилку. Дякую.
Atron Seige

1
@AtronSeige мені теж: P
Piyey

Я отримав те саме повідомлення про помилку для служби Windows, і в app.config навіть немає тегу "<configSections>".
mbx

Будь ласка, опублікуйте свою конфігурацію в pastebin і
зв’яжіть

2
Як виявилося, з моєю конфігурацією все гаразд, але machine.config на цій машині зламався. Він навіть містив рядок підключення SQLExpress / localhost, хоча на цій машині ніколи не було встановлено SQL.
mbx

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> 

Помилка була

введіть тут опис зображення

Щоб виправити помилку, я переставив елементи, і помилку було виправлено.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.