Sistem Konfigurasi Gagal Menginisialisasi

225

Saya baru mengenal Visual Studio. Saat ini saya sedang membuat formulir Login.

Saya punya kode ini.

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);
}

Tetapi setiap kali saya mencoba mengetikkan nama pengguna dan kata sandi, ada kesalahan yang disebut sistem Konfigurasi gagal diinisialisasi . Saya hanya ingin tahu masalah apa ini dan bagaimana saya bisa menyelesaikannya?

Tolong bantu.

sean
sumber
2
Hanya skenario lain - Jika Anda mencari ConfigurationManager.Appsettings [""], pastikan bahwa <appSettings> hadir di konfigurasi. Kalau tidak, Anda akan mendapatkan pengecualian ini
LCJ
1
Ini juga dapat terjadi jika Anda memiliki 2 lokasi untuk pengaturan aplikasi
Lawrence Thurman

Jawaban:

392

Pastikan bahwa file konfigurasi Anda (web.config jika web, atau app.config jika windows) di proyek Anda dimulai sebagai:

<?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>

Perhatikan bahwa di dalam configurationelemen, anak pertama harus menjadi configSectionselemen.

Di nameproperti pada sectionelemen, pastikan Anda mengganti YourProjectNamedengan nama proyek Anda yang sebenarnya.

Itu terjadi pada saya bahwa saya membuat layanan web di proyek perpustakaan kelas, kemudian saya menyalin (menimpa) file konfigurasi (untuk membawa konfigurasi titik akhir) ke aplikasi windows saya dan saya mulai memiliki masalah yang sama. Saya telah dihapus secara tidak sengaja configSections.

Itu berhasil untuk saya, semoga membantu

feluco79
sumber
79
"di dalam elemen 'konfigurasi', anak pertama harus menjadi elemen 'configSections'" << ini adalah poin penting bagi saya. Terima kasih.
demoncodemonkey
7
Hanya skenario lain - Jika Anda mencari ConfigurationManager.Appsettings [""], pastikan bahwa <appSettings> hadir di konfigurasi. Kalau tidak, Anda akan mendapatkan pengecualian ini
LCJ
6
Itu memperbaiki masalah saya di mana configSectionselemen ada tetapi terletak kemudian bagian dari app.config. Saya bertanya mengapa kesalahan ini terjadi. Saya pikir elemen XML tidak perlu dipesan.
Tae-Sung Shin
3
Ini benar. ConfigSections harus berupa simpul anak pertama di bawah, elemen konfigurasi.
Umang Desai
7
Cara Microsoft menerapkan app.config ini terbelakang !!! Paling tidak yang bisa mereka lakukan adalah melemparkan pesan kesalahan yang lebih baik!
codenamezero
105

Hapus file konfigurasi lama dari c: \ Users \ username \ AppData \ Local \ appname dan c: \ Users \ username \ AppData \ Roaming \ appname dan kemudian coba restart aplikasi Anda.

jarek
sumber
2
Terima kasih, sudah bekerja. Tapi saya masih tidak mengerti apa masalahnya?
cairkan
1
di bawah folder lokal file user.config kosong. Setelah menghapus aplikasi folder lokal mulai bekerja
Ozgur
3
Terima kasih itu berhasil. Tapi apa yang bisa menjadi alasan kesalahan ini.
vasuy19
1
File saya diisi dengan nilai rendah (0x00). Saya menyalin yang berfungsi dan kemudian baik
DanW
1
File konfigurasi saya di lokasi ini rusak selama acara pemadaman listrik - file konfigurasi yang biasanya XML diisi dengan NUL byte
mroselli
19

Terkadang Kesalahan terjadi karena windows membuat duplikat di

C: \ Users \ Data Aplikasi \ Lokal \ "Nama Aplikasi Anda" ...

Hapus saja folder ini dan selesai. Cobalah.

Ashu Gupta
sumber
2
TERIMA KASIH. Saya tidak dapat memperbaiki masalah saya dengan string file pengaturan yang tidak "diambil" oleh aplikasi saya. Saya membersihkan file konfigurasi, meregenerasi file .suo, menghapus semua file .settings yang ada dan masih tidak dapat memuat dari file pengaturan baru, tetapi tidak menerima kesalahan saat membangun. Mimpi buruk ini akhirnya berakhir.
Rachael
13

Jika Anda telah menambahkan bagian konfigurasi khusus Anda sendiri ke Anda App.Config, pastikan Anda telah mendefinisikan bagian dalam <configSections>elemen. Saya menambahkan XML konfigurasi saya tetapi lupa untuk menyatakan bagian konfigurasi di bagian atas - yang menyebabkan pengecualian "Sistem konfigurasi gagal diinisialisasi" untuk saya.

Flash Gordon
sumber
3
Juga - jika Anda memiliki bagian yang dinyatakan di bagian atas dan nama di bagian di bawah ini memiliki kesalahan ketik, Anda akan mendapatkan kesalahan ini. Jika Anda melihat InnerException dari pengecualian yang dilemparkan, ia akan memberi tahu Anda bagian mana yang menjadi masalah.
shindigo
6

Saya memiliki masalah yang sama dengan kelas MSTest: Marlon Grech dalam artikelnya mengatakan "elemen harus didefinisikan sebagai elemen pertama di App.config."

Jadi pastikan itu adalah elemen pertama di bawah elemen. Saya telah menempatkan AppSettings terlebih dahulu.

Selaras
sumber
ohh .. salahku: Anda memang melakukannya tetapi saya tidak melihat ;-) Terima kasih atas klarifikasi
kleopatra
4

Saya tahu ini sudah dijawab tetapi saya memiliki masalah yang sama persis dalam tes unit saya. Saya merobek rambut saya - menambahkan bagian appSettings, dan kemudian mendeklarasikan bagian konfigurasi sesuai jawabannya. Akhirnya saya mengetahui bahwa saya sudah mendeklarasikan bagian appSettings lebih jauh ke atas file konfigurasi saya. Kedua bagian menunjuk ke file pengaturan eksternal saya "appSettings.config" tetapi elemen appSettings pertama menggunakan file atribut sementara yang lain menggunakan atribut configSource . Saya tahu pertanyaannya adalah tentang connectionStrings. Benar saja, ini terjadi jika elemen appSettings adalah elemen connectionStrings yang diduplikasi dengan atribut yang berbeda.

Mudah-mudahan, ini bisa memberi orang lain solusi sebelum mereka menempuh jalan yang saya lakukan yang mengarah pada pemborosan satu atau dua jam. desah oh kehidupan kami para pengembang. Kami menghabiskan lebih banyak waktu beberapa hari untuk debugging daripada yang kami habiskan untuk pengembangan!

lebih dulu
sumber
Bingo. Sudah appSettingsdan applicationSettingskeduanya.
SushiGuy
3

Saya mulai mendapatkan masalah ini setelah menguninstall Oracle Client Drivers dan itu menghapus saya Instalasi C : \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

Menyalinnya dari komputer lain menyelesaikan masalah.

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

Jika Anda memiliki pengaturan Ruang lingkup pengguna, Anda mungkin juga memiliki file user.config di suatu tempat di [Userfolder]\AppData\Local\[ProjectName]folder.

Jika nanti Anda menghapus pengaturan cakupan Pengguna, user.config tidak akan secara otomatis dihapus, dan keberadaannya dapat menyebabkan pesan kesalahan yang sama. Menghapus folder itu membantu saya.

Wuolennaj
sumber
1

Wow, aku butuh selamanya untuk menemukan yang satu ini. Untuk beberapa alasan mengubah atribut [assembly: AssemblyCompany("CompanyName")]di AssemblyInfo.csmembuat kesalahan ini hilang. Saya mereferensikan proyek yang memiliki nilai berbeda untuk atribut [assembly: AssemblyCompany("CompanyName")]. Saya memastikan kedua proyek memiliki nilai atribut yang sama dan itu berhasil!

Tono Nam
sumber
Apakah ini bug? Seseorang hampir tidak dapat diharapkan untuk membuat nama perusahaan Anda cocok dengan proyek pihak ketiga yang Anda rujuk.
Denise Skidmore
1

Masalah yang sama dengan saya, saya memecahkan masalah saya dengan menghapus verion = "v3.5" dari App.config.

Sebelum

 <?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>

Larutan

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

  <startup>

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

Berikut adalah cara menggunakan versi

MSDN Mendukung Elemen Runtime


sumber
1

Setelah pencarian yang lama saya sadari, pengecualian ini memiliki pengecualian dalam yang memberi tahu Anda apa yang salah dengan file konfigurasi Anda

Gerrie Pretorius
sumber
1
Saya mencoba untuk mengomentari-membatalkan bagian yang berbeda dari app.config saya dan pada pengecualian bahkan tidak terlihat pada pengecualian dalam. Dan setelah melihat jawaban ini saya menemukan apa masalahnya. Terima kasih.
Sid
0

Perlu dicatat bahwa jika Anda menambahkan hal-hal seperti string koneksi ke app.config, bahwa jika Anda menambahkan item di luar bagian konfigurasi yang ditentukan, itu tidak akan langsung dikeluhkan, tetapi ketika Anda mencoba dan mengaksesnya, Anda dapat memperoleh kesalahan di atas.

Perkecil semua bagian utama dan pastikan tidak ada item di luar yang ditentukan. Jelas, ketika Anda benar-benar melihatnya.

Anthony Horne
sumber
0

Dalam kasus saya satu-satunya solusi adalah menambahkan referensi ke System.Configurationdalam proyek Uji saya juga.

Jose Santos
sumber
0

Ini agak bodoh, tetapi bagi saya saya memperbaikinya dengan melakukan get terbaru dari kontrol sumber pada kode saya. Saya pikir ada beberapa elemen konfigurasi baru yang ditambahkan oleh orang lain, dan saya perlu menimpa file konfigurasi saya. OP menunjukkan kesalahan yang saya dapatkan, yang tidak benar-benar menunjukkan saya ke arah yang benar.

DLeh
sumber
0

Saya juga menghadapi masalah yang sama, Tapi tanpa sengaja saya menulis tanpa menulis, yang sebelumnya harus masuk ke dalam tag ini. dengan demikian kesalahan 'Sistem Konfigurasi Gagal Menginisialisasi' muncul. Semoga ini bisa membantu

Priyabrata biswal
sumber
0

Dalam kasus saya, saya memiliki dua konfigurasi dalam file app.config. Setelah menghapus yang bersembunyi di baris kode, aplikasi berfungsi dengan baik.

Jadi untuk seseorang yang memiliki masalah yang sama, periksa apakah Anda memiliki duplikat konfigurasi terlebih dahulu.

oopsdazie
sumber
0

Jika Anda berurusan dengan Azure WebJob - saya harus menghapus yang berikut setelah memutakhirkan ke 4.6.1 terbaru.

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

Semoga ini membantu.

Dave Friedel
sumber
0

Dalam kasus saya, dalam file .edmx saya, saya telah menjalankan perintah 'Update Model From Database'. Perintah ini menambahkan string koneksi yang tidak perlu ke file app.config saya. Saya menghapus string koneksi itu dan semuanya baik kembali.

Colin
sumber
0

Saya memecahkan masalah dengan menggunakan kode di bawah ini

   <?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>
Sumant Singh
sumber
0

Cobalah untuk menyimpan file .config sebagai utf-8 jika Anda memiliki beberapa karakter "spesial" di sana. Itulah masalah dalam kasus aplikasi konsol saya.

lukalev
sumber
0

Seperti @Flash Gordon sebutkan dalam komentarnya, Anda perlu mendefinisikan tag khusus (sebagai bagian) di file App.config Anda , di bawah <configSections>. Misalnya, Anda sedang mengerjakan proyek otomatisasi pengujian dengan SpecFlow & <specFlow>tag tambahan, maka versi paling sederhana dari App.config akan terlihat seperti ini: masukkan deskripsi gambar di sini

DenisD
sumber
0

Aku hanya punya ini dan itu karena saya memiliki <configuration>elemen dalam bersarang dari <configuration>elemen.

Mike Cheel
sumber
0

Saya restart Visual studio dan bahkan seluruh PC. Saya membersihkan proyek, membangun kembali, dan menghapus file bin.

Tidak ada yang membantu sampai saya mengubah konfigurasi dari x64 ke x86. Ini bekerja pada x86 tetapi ketika saya mengubahnya kembali juga berfungsi!

Ali123
sumber
0

Saya mencoba semua solusi di atas mencoba mencari tahu mengapa salah satu unit test saya gagal mengambil konfigurasi dari file app.config yang sempurna.

Saya punya 2 referensi ke majelis yang sama seperti:

referensi rangkap

file proyek sebelum dan sesudah

Menghapus referensi (duplikat) dengan warna kuning memperbaikinya untuk saya.

Saya harap ini bekerja untuk orang lain, itu membuat saya gila untuk sementara waktu.

ElMatador
sumber
0

Solusi mudah untuk proyek .Net Core WinForms / WPF / .Net

langkah 1: Instal System.Configuration.ConfigurationManageroleh Nuget Manager

langkah 2: Tambahkan App.Configfile baru

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

step3: Dapatkan nilainya

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

Jika Anda memanggilnya dari Class Librarymaka tambahkan App.Configfile pada Proyek Utama Anda.

fatihyildizhan
sumber
0

Jika Anda memiliki bagian khusus, Anda perlu menyebutkan bahwa di bawah configSections tepat di bawah tag konfigurasi.

Silakan periksa file transformasi Anda, pastikan Anda menghapus tag yang tidak perlu. Hanya saja bagian yang akan bervariasi perlu ada di sana dalam mentransformasikan file. jangan menyebutkan bagian config di file transformasi jika tidak diperlukan. ini juga akan menyebabkan masalah.

jika Anda memiliki kesalahan sintaks di machine.config, maka kesalahan ini juga diharapkan.

alat pengambilan sari
sumber