Hệ thống cấu hình không thể khởi tạo


225

Tôi mới đến Visual Studio. Tôi hiện đang tạo một biểu mẫu Đăng nhập.

Tôi có mã này.

string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
try
{
    using (OdbcConnection connect = new OdbcConnection(connectionString))
    {
        connect.Open();
        OdbcCommand cmd = new OdbcCommand("SELECT username, password FROM receptionist", connect);
        OdbcDataReader reader = cmd.ExecuteReader();

        if (username_login.Text == username && password_login.Text == password)
        {
            this.Hide();
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.Close();
        }
        else 
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        connect.Close();
    }
}
catch (OdbcException ex)
{
    MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Nhưng bất cứ khi nào tôi cố gắng nhập tên người dùng và mật khẩu, có một lỗi gọi là Cấu hình hệ thống không thể khởi tạo . Tôi chỉ tự hỏi đây là loại vấn đề gì và làm thế nào tôi có thể giải quyết vấn đề này?

Xin vui lòng giúp đỡ.



2
Chỉ là một kịch bản khác - Nếu bạn đang tìm kiếm Trình quản lý cấu hình. Cài đặt [""], hãy đảm bảo rằng <appSinstall> có trong cấu hình. Nếu không, bạn sẽ nhận được ngoại lệ này
LCJ

1
Điều này cũng có thể xảy ra nếu bạn có 2 vị trí cho cài đặt ứng dụng
Lawrence Thurman

Câu trả lời:


392

Đảm bảo rằng tệp cấu hình của bạn (web.config nếu web hoặc app.config nếu windows) trong dự án của bạn bắt đầu như sau:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" 
                      type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

            <section name="YourProjectName.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />

        </sectionGroup>
    </configSections>
</configuration>

Lưu ý rằng bên trong configurationphần tử, con đầu tiên phải là configSectionsphần tử.

Trong thuộc nametính trên sectionphần tử, đảm bảo bạn thay thế YourProjectNamebằng tên dự án thực tế của bạn.

Nó xảy ra với tôi rằng tôi đã tạo một dịch vụ web trong một dự án thư viện lớp, sau đó tôi sao chép (ghi đè) tệp cấu hình (để đưa cấu hình điểm cuối) vào ứng dụng windows của tôi và tôi bắt đầu gặp vấn đề tương tự. Tôi đã vô tình loại bỏ configSections.

nó làm việc cho tôi, hy vọng nó sẽ giúp


79
"Bên trong phần tử 'cấu hình', đứa con đầu tiên phải là phần tử 'configSections'" << đây là điểm quan trọng đối với tôi. Cảm ơn.
demcodemonkey

7
Chỉ là một kịch bản khác - Nếu bạn đang tìm kiếm Trình quản lý cấu hình. Cài đặt [""], hãy đảm bảo rằng <appSinstall> có trong cấu hình. Nếu không, bạn sẽ nhận được ngoại lệ này
LCJ

6
Nó đã khắc phục sự cố của tôi khi configSectionsphần tử tồn tại nhưng nằm ở phần sau của app.config. Tôi không thể giúp hỏi tại sao lỗi này xảy ra. Tôi nghĩ rằng các yếu tố XML không cần phải được đặt hàng.
Tae-Sung Shin

3
Chính xác. Các cấu hình phải là nút con đầu tiên bên dưới, phần tử cấu hình.
Umang Desai

7
Cách Microsoft triển khai app.config này bị chậm lại !!! Ít nhất họ có thể làm là ném một thông báo lỗi tốt hơn!
codenamezero

105

Xóa các tệp cấu hình cũ khỏi c: \ Users \ username \ AppData \ Local \ appnamec: \ Users \ username \ AppData \ Roaming \ appname và sau đó thử khởi động lại ứng dụng của bạn.


2
Cảm ơn, làm việc. Nhưng tôi vẫn không hiểu vấn đề là gì?
lỏng

1
trong thư mục local.config tập tin trống. Sau khi xóa ứng dụng thư mục cục bộ bắt đầu hoạt động
Ozgur

3
Cảm ơn nó đã làm việc. Nhưng những gì có thể là lý do cho lỗi này.
vasuy19

1
Tệp của tôi chứa đầy các giá trị thấp (0x00). Tôi sao chép một làm việc trong và sau đó nó là tốt
DanW

1
Tệp cấu hình của tôi ở vị trí này đã bị hỏng trong sự kiện mất điện - tệp cấu hình thường là XML chứa đầy các byte NUL
mroselli

19

Đôi khi xảy ra lỗi vì một cửa sổ tạo một bản sao trong

C: \ Users \ Dữ liệu ứng dụng \ Local \ "Tên ứng dụng của bạn" ...

Chỉ cần xóa thư mục này và thực hiện. thử nó.


2
CẢM ƠN BẠN. Tôi không thể khắc phục sự cố của mình với các chuỗi tệp cài đặt không bị "nhặt" bởi ứng dụng của tôi. Tôi đã dọn sạch các tệp cấu hình, tạo lại tệp .suo, xóa tất cả các tệp .sinstall hiện có và vẫn không thể tải từ bất kỳ tệp cài đặt mới nào, nhưng không nhận được bất kỳ lỗi nào khi xây dựng. Cơn ác mộng này cuối cùng đã kết thúc.
Rachael

13

Nếu bạn đã thêm các phần cấu hình tùy chỉnh của riêng bạn vào của bạn App.Config, hãy đảm bảo bạn đã xác định phần trong <configSections>phần tử. Tôi đã thêm XML cấu hình của mình nhưng quên khai báo phần cấu hình lên trên cùng - điều này gây ra ngoại lệ "Hệ thống cấu hình không thể khởi tạo" cho tôi.


3
Ngoài ra - nếu bạn có một phần được khai báo lên trên và tên trong phần bên dưới có lỗi đánh máy, bạn sẽ gặp lỗi này. Nếu bạn nhìn vào InternalException của ngoại lệ bị ném, nó sẽ cho bạn biết phần nào là vấn đề.
shindigo

6

Tôi gặp vấn đề tương tự với lớp MSTest: Marlon Grech trong bài viết của mình nói rằng "phần tử phải được xác định là phần tử đầu tiên trong App.config."

Vì vậy, hãy chắc chắn rằng đó là phần tử đầu tiên trong phần tử. Tôi đã đặt AppS Settings trước.


ohh .. xấu của tôi: bạn thực sự đã làm nhưng tôi đã không nhận thấy ;-) Cảm ơn bạn đã làm rõ
kleopatra

4

Tôi biết điều này đã được trả lời nhưng tôi đã có chính xác vấn đề tương tự trong các bài kiểm tra đơn vị của mình. Tôi đã xé tóc ra - thêm phần cài đặt ứng dụng, rồi khai báo phần cấu hình theo câu trả lời. Cuối cùng phát hiện ra rằng tôi đã khai báo phần cài đặt ứng dụng trên tệp cấu hình của mình. Cả hai phần đều trỏ đến tệp cài đặt bên ngoài của tôi "appSinstall.config" nhưng phần tử appSinstall đầu tiên sử dụng tệp thuộc tính trong khi phần còn lại sử dụng thuộc tính configSource . Tôi biết câu hỏi là về ConnectionStrings. Chắc chắn, điều này xảy ra nếu phần tử appSinstall là phần tử ConnectionStrings được sao chép với các thuộc tính khác nhau.

Hy vọng rằng, điều này có thể cung cấp cho người khác giải pháp trước khi họ đi vào con đường tôi đã làm dẫn đến lãng phí một hoặc hai giờ. thở dài oh cuộc sống của chúng tôi phát triển. Chúng ta lãng phí nhiều giờ hơn một số ngày để gỡ lỗi hơn là chúng ta dành để phát triển!


Chơi lô tô. Đã appSettingsapplicationSettingscả hai.
SushiGuy

3

Tôi bắt đầu gặp vấn đề này sau khi gỡ cài đặt Trình điều khiển máy khách của Oracle và nó đã xóa C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

Sao chép nó từ một máy tính khác đã giải quyết vấn đề.


3
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>

3

Nếu bạn có cài đặt Phạm vi người dùng, bạn cũng có thể có tệp user.config ở đâu đó trong [Userfolder]\AppData\Local\[ProjectName]thư mục.

Nếu sau này bạn xóa cài đặt trong phạm vi Người dùng, user.config sẽ không tự động bị xóa và sự hiện diện của nó có thể gây ra thông báo lỗi tương tự. Xóa thư mục đã lừa tôi.


1

Wow nó đã đưa tôi mãi mãi để tìm ra cái này. Đối với một số lý do thay đổi thuộc tính [assembly: AssemblyCompany("CompanyName")]tại AssemblyInfo.cslàm cho lỗi này biến mất. Tôi đã tham khảo một dự án có giá trị khác cho thuộc tính [assembly: AssemblyCompany("CompanyName")]. Tôi chắc chắn rằng cả hai dự án đều có cùng giá trị thuộc tính và nó hoạt động rất tốt!


Đây có phải là một lỗi? Khó có thể dự kiến ​​làm cho tên công ty của bạn khớp với dự án của bên thứ ba mà bạn tình cờ tham khảo.
Denise Skidmore

1

Cùng một vấn đề với tôi, tôi đã giải quyết vấn đề của mình bằng cách xóa verion = "v3.5" khỏi App.config.

Trước

 <?xml version="1.0" encoding="utf-8"?>
  <configuration>

  <startup>

 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
 </startup>
 <supportedRuntime version="v3.5" />//Remove this
</configuration>

Giải pháp

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <startup>

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
  </startup>
  </configuration>

Đây là cách sử dụng phiên bản trên

Phần tử thời gian chạy hỗ trợ MSDN


1

Sau một hồi tìm kiếm tôi nhận ra, ngoại lệ này có một ngoại lệ bên trong cho bạn biết chính xác những gì sai với tệp cấu hình của bạn


Tôi đã cố gắng bình luận-uncomment các phần khác nhau trong app.config của tôi và ngoại lệ thậm chí không nhìn vào ngoại lệ bên trong. Và sau khi thấy câu trả lời này, tôi đã tìm thấy vấn đề là gì. Cảm ơn.
Sid

0

Điều đáng chú ý là nếu bạn thêm những thứ như chuỗi kết nối vào app.config, thì nếu bạn thêm các mục bên ngoài các phần cấu hình đã xác định, nó sẽ không khiếu nại ngay lập tức, nhưng khi bạn thử và truy cập nó, thì bạn có thể nhận được các lỗi trên.

Thu gọn tất cả các phần chính và đảm bảo không có mục nào bên ngoài các phần được xác định. Rõ ràng, khi bạn đã thực sự phát hiện ra nó.


0

Trong trường hợp của tôi, giải pháp duy nhất là thêm tham chiếu vào System.Configurationdự án Thử nghiệm của tôi.


0

Điều này thật ngu ngốc, nhưng đối với tôi, tôi đã sửa nó bằng cách thực hiện một bản mới nhất từ ​​kiểm soát nguồn trên mã của mình. Tôi nghĩ rằng có một số yếu tố cấu hình mới đã được người khác thêm vào và tôi cần ghi đè lên các tệp cấu hình của mình. OP cho thấy lỗi tôi đã mắc phải, điều đó thực sự không chỉ cho tôi đi đúng hướng.


0

Tôi cũng đối mặt với cùng một vấn đề, nhưng vô tình tôi đã viết mà không viết, cái trước nên đi vào bên trong các thẻ này. do đó, lỗi 'Hệ thống cấu hình không thể khởi tạo' đã phát sinh. Hy vọng nó sẽ giúp


0

Trong trường hợp của tôi, tôi có hai cấu hình trong tệp app.config. Sau khi xóa cái ẩn trong các dòng mã, ứng dụng hoạt động tốt.

Vì vậy, đối với ai đó có cùng một vấn đề, hãy kiểm tra xem bạn có cấu hình trùng lặp trước không.


0

Nếu bạn đang xử lý Azure WebJob - tôi đã phải xóa phần sau sau khi nâng cấp lên 4.6.1 mới nhất.

  <compilation debug="true" targetFramework="4.6.1">
    <assemblies>
      <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </assemblies>
  </compilation>

Hi vọng điêu nay co ich.


0

Trong trường hợp của tôi, trong tệp .edmx của tôi, tôi đã chạy lệnh 'Cập nhật mô hình từ cơ sở dữ liệu'. Lệnh này đã thêm một chuỗi kết nối không cần thiết vào tệp app.config của tôi. Tôi đã xóa chuỗi kết nối đó và tất cả đã tốt trở lại.


0

Tôi đã giải quyết vấn đề bằng cách sử dụng mã dưới đây

   <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings"
                  type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

      <section name="YourProjectName.Properties.Settings"
               type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
               requirePermission="false" />

    </sectionGroup>

  </configSections>
  <appSettings>
    <add key="SPUserName" value="TestUser" />
    <add key="SPPassword" value="UserPWD" />
  </appSettings>
</configuration>

0

Cố gắng lưu tệp .config dưới dạng utf-8 nếu bạn có một số ký tự "đặc biệt" trong đó. Đó là vấn đề trong trường hợp của tôi về một ứng dụng console.


0

Như @Flash Gordon đã đề cập trong bình luận của anh ấy, bạn sẽ cần xác định bất kỳ thẻ tùy chỉnh nào (dưới dạng một phần) trong tệp App.config , bên dưới <configSections>. Ví dụ: bạn đang làm việc trong một dự án tự động hóa thử nghiệm với SpecFlow và thêm <specFlow>thẻ, thì phiên bản đơn giản nhất của App.config sẽ giống như sau: nhập mô tả hình ảnh ở đây


0

Tôi chỉ có cái này và đó là vì tôi có một <configuration>phần tử được lồng bên trong một <configuration>phần tử.


0

Tôi khởi động lại Visual studio và thậm chí toàn bộ PC. Tôi đã làm sạch dự án, xây dựng lại và xóa tập tin bin.

Không có gì giúp được cho đến khi tôi thay đổi cấu hình từ x64 thành x86. Nó hoạt động trên x86 nhưng khi tôi thay đổi thì nó cũng hoạt động!


0

Tôi đã thử tất cả các giải pháp ở trên để cố gắng tìm ra lý do tại sao một trong những bài kiểm tra đơn vị của tôi không nhận được cấu hình từ tệp app.config là hoàn hảo.

Tôi đã có 2 tài liệu tham khảo cho cùng một hội đồng như vậy:

tham chiếu trùng lặp

hồ sơ dự án trước và sau

Xóa tham chiếu (trùng lặp) màu vàng đã sửa nó cho tôi.

Tôi hy vọng điều này có hiệu quả với người khác, nó đã khiến tôi phát điên.


0

Giải pháp dễ dàng cho .Net Core các dự án Thư viện lớp chuẩn WinForms / WPF / .Net

bước 1: Cài đặtSystem.Configuration.ConfigurationManager bởi Nuget Manager

Bước 2: Thêm một App.Configtệp mới

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Bodrum" value="Yalikavak" />    
  </appSettings>
</configuration>

bước 3: Nhận giá trị

string value = ConfigurationManager.AppSettings.Get("Bodrum");
// value is Yalikavak

Nếu bạn đang gọi nó từ một Class Librarythì hãy thêm App.Configtệp vào Dự án chính của bạn.


0

Nếu bạn có một phần tùy chỉnh, bạn cần đề cập rằng trong phần Cấu hình ngay bên dưới thẻ cấu hình.

Vui lòng kiểm tra các tệp biến đổi của bạn, đảm bảo bạn loại bỏ các thẻ không cần thiết. Chỉ là phần sẽ thay đổi cần có trong các tệp chuyển đổi. không đề cập đến phần cấu hình trong các tệp chuyển đổi nếu không cần thiết. Điều này cũng sẽ gây ra vấn đề.

nếu bạn có bất kỳ lỗi cú pháp nào trong machine.config, thì cũng có lỗi nà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.