Chỉ cho phép một phần tử configSection trên mỗi tệp cấu hình và nếu có thì phải là phần tử con đầu tiên của phần tử cấu hình gốc


92

Tôi đang phát triển ứng dụng bảng điều khiển và khi chạy tệp .exe, tôi gặp lỗi sau:

system.Configuration.ConfigurationErrorsException: Chỉ <configSections>cho phép một phần tử trên mỗi tệp cấu hình và nếu có thì phải là <configuration>phần tử con đầu tiên của phần tử gốc .

Đây là App.configtệp của tôi :

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

Tuy nhiên, nếu tôi xóa phần sau startup, thì nó hoạt động tốt

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>

1
Bằng tiếng Đức, thông báo lỗi có nội dung " Pro Konfigurationsdatei ist nur ein <configSection> -Element zulässig und muss, sofern vorhanden, das erste untergeordnete Element des Stamm- <configuration> -Elements sein. " (Đề phòng trường hợp ai đó đang tìm kiếm thông tin này ).
Uwe Keim

Câu trả lời:


223

Bản thân thông báo lỗi thực sự nêu chi tiết cách sửa lỗi chính xác:

configSectionsphải là con đầu tiên * của phần tử gốc:

* nhấn mạnh thêm

Vì vậy, chỉ cần di chuyển configSectionslên đầu:

<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
Hôm nay tôi học được rằng tôi nên đọc toàn bộ thông báo lỗi. Cảm ơn.
Atron Seige

1
@AtronSeige tôi cũng vậy: P
Piyey

Tôi nhận được thông báo lỗi tương tự cho một dịch vụ windows và app.config thậm chí không có thẻ "<configSection>" trong đó.
mbx

Xin vui lòng gửi cấu hình của bạn để Pastebin và Link nó đây
Daniel Hilgarth

2
Hóa ra, cấu hình của tôi vẫn ổn nhưng machine.config trên máy đó bị hỏng. Nó thậm chí còn chứa một chuỗi kết nối SQLExpress / localhost mặc dù không có SQL nào được cài đặt trên máy đó.
mbx

2

Tệp web.config Lỗi

 <?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ỗi là

nhập mô tả hình ảnh ở đây

Để sửa lỗi, tôi đã sắp xếp lại các phần tử và lỗi đã được sửa.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.