Yapılandırma Sistemi Başlatılamadı


225

Visual Studio'da yeniyim. Şu anda bir Giriş formu oluşturuyorum.

Bu kod var.

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

Ancak kullanıcı adını ve şifreyi girmeye çalıştığımda, Yapılandırma sistemi başlatılamadı denilen bir hata var . Sadece bu nasıl bir problem olduğunu merak ediyorum ve bunu nasıl çözebilirim?

Lütfen yardım et.



2
Başka bir senaryo - ConfigurationManager.Appsettings [""] arıyorsanız, yapılandırmada <appSettings> öğesinin bulunduğundan emin olun. Aksi takdirde bu istisnayı elde edersiniz
LCJ

1
Bu, appsettings için 2 konumunuz varsa da olabilir
Lawrence Thurman

Yanıtlar:


392

Projenizdeki yapılandırma dosyanızın (web.config ise web veya app.config) projenizin şu şekilde başladığından emin olun:

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

configurationÖğenin içinde, ilk çocuğun configSectionsöğe olması gerektiğini unutmayın .

Gelen nameüzerinde mülkiyet sectionunsuru, değiştirmek emin olunYourProjectName gerçek projenin adı ile.

Bir sınıf kütüphanesi projesinde bir web hizmeti oluşturduğumda, sonra (son nokta yapılandırmasını getirmek için) yapılandırma dosyasını kopyaladım (üzerine yazdım) Windows uygulamama ve aynı problemi yaşamaya başladım. Yanlışlıkla kaldırmıştım configSections.

benim için çalıştı, umarım yardımcı olur


79
"" yapılandırma "öğesinin içinde, ilk alt öğe" configSections "öğesi olmalıdır" << bu benim için önemli bir noktaydı. Teşekkürler.
demoncodemonkey

7
Başka bir senaryo - ConfigurationManager.Appsettings [""] arıyorsanız, yapılandırmada <appSettings> öğesinin bulunduğundan emin olun. Aksi takdirde bu istisnayı alacaksınız
LCJ

6
configSectionsÖğenin var olduğu ancak app.config dosyasının daha sonraki bir bölümünde bulunduğu sorunumu düzeltti . Bu hatanın neden olduğunu sormaya yardımcı olamıyorum. XML öğelerinin sipariş edilmesine gerek olmadığını düşündüm.
Tae-Sung Shin

3
Doğru. ConfigSections, yapılandırma öğesi altındaki ilk alt düğüm olmalıdır.
Umang Desai

7
Microsoft'un bu app.config uygulamasını uygulama şekli geciktirildi !!! Yapabilecekleri en az şey daha iyi bir hata mesajı atmaktır!
codenamezero

105

Eski yapılandırma dosyalarını c: \ Users \ kullanıcıadı \ AppData \ Local \ appname ve c: \ Users \ kullanıcı adı \ AppData \ Roaming \ appname'den silin ve ardından uygulamanızı yeniden başlatmayı deneyin.


2
Teşekkürler, çalışıyor. Ama hala sorunun ne olduğunu anlamıyorum?
Likit

1
yerel klasör altında user.config dosyası boştu. Yerel klasör uygulamasını sildikten sonra çalışmaya başlayın
Özgür

3
Teşekkürler çalıştı. Ancak bu hatanın nedeni ne olabilir?
vasuy19

1
Dosyam düşük değerlerle (0x00) dolduruldu.
İçine

1
Bu konumdaki yapılandırma
dosyam

19

Bazen Windows bir pencerede kopya oluşturduğundan Hata oluşur

C: \ Kullanıcılar \ Uygulama Verileri \ Yerel \ "Uygulama Adı" ...

Sadece bu klasörü silin ve bitti. dene.


2
TEŞEKKÜR EDERİM. Uygulamam tarafından "alınmadı" ayarları dosya dizeleri ile sorunumu gideremedi. Yapılandırma dosyalarını temizledim, .suo dosyasını yeniden oluşturdum, mevcut tüm .settings dosyalarını sildim ve hala yeni ayarlar dosyasından yükleyemedim, ancak derleme sırasında herhangi bir hata almadım. Bu kabus sonunda sona erdi.
Rachael

13

Kendinize özel yapılandırma bölümlerinizi eklediyseniz, öğedeki App.Configbölümü tanımladığınızdan emin olun <configSections>. Benim yapılandırma XML ekledim ama benim için "Yapılandırma sistemi başlatılamadı" istisnasına neden olan yapılandırma bölümünü yukarı beyan etmeyi unuttum.


3
Ayrıca - yukarıda açıklanan bir bölümünüz varsa ve aşağıdaki bölümdeki adın bir yazım hatası varsa, bu hatayı alırsınız. Atılan istisnanın InnerException özelliğine bakarsanız, sorunun hangi bölüm olduğunu söyleyecektir.
shindigo

6

MSTest sınıfında da aynı sorun vardı: Marlon Grech, makalesinde "öğenin App.config dosyasındaki ilk öğe olarak tanımlanması gerekiyor" diyor.

Bu yüzden, öğenin altındaki ilk öğe olduğundan emin olun. Önce AppSettings'i koymuştum.


ohh .. benim kötü: gerçekten yaptın ama fark etmedim ;-) Açıklama için teşekkürler
kleopatra

4

Bunun zaten yanıtlandığını biliyorum, ancak birim testlerimde tam olarak aynı sorunu yaşadım. Saçlarımı yırtıyorum - bir appSettings bölümü ekledim ve ardından cevaba göre yapılandırma bölümünü beyan ettim. Sonunda ben zaten benim yapılandırma dosyası kadar bir appSettings bölümü ilan öğrendim. Her iki bölüm de harici ayarlar dosyama "appSettings.config" yi, ancak ilk appSettings öğesini , diğeri ise öznitelik dosyasını kullanırken diğeri configSource özelliğini kullandı . Sorunun connectionStrings ile ilgili olduğunu biliyorum. Elbette, bu appSettings öğesi farklı özniteliklerle çoğaltılan connectionStrings öğesiyse bu olur.

İnşallah, bu, bir ya da iki saat israfına yol açan yaptığım yolda gitmeden önce başka birine çözüm sağlayabilir. iç çekiş oh bize geliştiricilerin hayatı. Hata ayıklamak için bazı günler geliştirmek için harcadığımızdan daha fazla saat harcıyoruz!


Bingo. Had appSettingsve applicationSettingshem.
SushiGuy

3

Oracle Client Drivers'ı kaldırdıktan sonra bu sorunu almaya başladım ve C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

Başka bir bilgisayardan kopyalamak sorunu çözdü.


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

3

Kapsamlı kullanıcı ayarlarınız varsa, [Userfolder]\AppData\Local\[ProjectName]klasörde bir yerde bir user.config dosyanız da olabilir .

Daha sonra Kullanıcı kapsamındaki ayarları kaldırırsanız user.config otomatik olarak kaldırılmaz ve varlığı aynı hata iletisine neden olabilir. Klasörü silmek benim için hile yaptı.


1

Vay canına, bunu anlaması sonsuza dek sürdü. Herhangi bir nedenle [assembly: AssemblyCompany("CompanyName")]adresindeki özniteliği değiştirmek AssemblyInfo.csbu hatayı ortadan kaldırdı. Özellik için farklı bir değere sahip bir projeye başvuruyordum [assembly: AssemblyCompany("CompanyName")]. Her iki projenin de aynı özellik değerine sahip olduğundan emin oldum ve harika çalıştı!


Bu bir hata mı? Şirket adınızın, başvurduğunuz üçüncü taraf bir projeyle eşleşmesi beklenemez.
Denise Skidmore

1

Benimle aynı sorun App.config'den verion = "v3.5" kaldırarak sorunumu çözdü.

Önce

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

Çözüm

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

  <startup>

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

Sürümün nasıl kullanılacağı aşağıda açıklanmıştır

MSDN Destek Çalışma Zamanı Öğesi


1

Fark ettiğim uzun bir aramadan sonra, bu istisnanın yapılandırma dosyanızda tam olarak neyin yanlış olduğunu söyleyen bir iç istisnası vardır.


1
Benim app.config farklı bölümlerinde yorum-uncomment çalışıyordu ve istisna olarak iç istisna bile bakmadı. Ve bu cevabı gördükten sonra sorunun ne olduğunu buldum. Teşekkürler.
Sid

1

.Net Core WinForms / WPF / .Net Standart Sınıf Kütüphanesi projeleri için kolay çözüm

1. adım:System.Configuration.ConfigurationManager Nuget Manager tarafından yükleyin

2. adım: Yeni bir App.Configdosya ekleyin

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

step3: Değeri alın

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

Birinden arıyorsanız Class Library, App.Configdosyayı Ana Projenize ekleyin .


0

App.config dosyasına bağlantı dizeleri gibi şeyler eklerseniz, tanımlanan yapılandırma bölümlerinin dışına öğeler eklerseniz, hemen şikayet etmeyeceğinizi, ancak buna erişmeye çalıştığınızda, yukarıdaki hatalar.

Tüm ana bölümleri daraltın ve tanımlanan bölümlerin dışında hiçbir öğe olmadığından emin olun. Açıkçası, gerçekten fark ettiğinizde.


0

Benim durumumda tek çözüm referansı System.ConfigurationTest projemde de eklemekti .


0

Bu biraz aptalca, ama benim için kodumdaki kaynak kontrolünden en son sonucu alarak düzelttim. Başka biri tarafından eklenen yeni bir yapılandırma öğesi olduğunu düşünüyorum ve yapılandırma dosyalarımın üzerine yazmam gerekiyordu. OP beni gerçekten doğru yöne işaret etmediğim hatayı gösteriyor.


0

Ben de aynı sorunla karşı karşıya kaldım, ama yanlışlıkla yazmadan yazdım, bir öncekinin bu etiketlerin içine girmesi gerekiyor. böylece 'Yapılandırma Sistemi Başlatılamadı' hatası oluştu. Umarım yardımcı olur


0

Benim durumumda, app.config dosyasında iki yapılandırma var. Kod satırlarında saklanan birini sildikten sonra uygulama iyi çalışıyor.

Birisi aynı sorunu yaşıyorsa, önce yinelenen yapılandırmalara sahip olup olmadığınızı kontrol edin.


0

Bir Azure WebJob ile uğraşıyorsanız - en son 4.6.1 sürümüne yükselttikten sonra aşağıdakileri kaldırmak zorunda kaldım.

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

Bu yardımcı olur umarım.


0

Benim durumumda, .edmx dosyamda 'Veritabanından Modeli Güncelle' komutunu çalıştırmıştım. Bu komut, app.config dosyama gereksiz bir bağlantı dizesi ekledi. Bu bağlantı dizesini sildim ve hepsi tekrar iyiydi.


0

Aşağıdaki kodu kullanarak sorunu çözdüm

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

İçinde bazı "özel" karakterler varsa .config dosyasını utf-8 olarak kaydetmeyi deneyin. Bir konsol uygulaması durumumda sorun buydu.


0

As @Flash Gordon onun yorumunda belirtildiği, kendi içinde herhangi bir özel etiket (bir bölüm olarak) tanımlamak gerekir App.config altında, dosyanın <configSections>. Örneğin, SpecFlow ve <specFlow>etiket ekleyerek bir test otomasyon projesi üzerinde çalışıyorsunuz , ardından App.config dosyasının en basit sürümü aşağıdaki gibi görünecektir: resim açıklamasını buraya girin


0

Sadece bunu yaptım ve bunun nedeni bir <configuration>elementin içinde yuvalanmış bir elementim olmasıydı <configuration>.


0

Visual studio'yu ve hatta tüm bilgisayarı yeniden başlattım. Projeyi temizledim, yeniden oluşturdum ve bin dosyasını sildim.

Yapılandırmayı x64'ten x86'ya değiştirene kadar hiçbir şey yardımcı olmadı. Bu x86 üzerinde çalıştı ama ben geri değiştirdiğinde de çalıştı!


0

Birim testlerimden birinin yapılandırmayı neden mükemmel bir app.config dosyasından alamadığını anlamaya çalışırken yukarıdaki tüm çözümleri denedim.

Aynı montaj için 2 referansları vardı:

çift ​​referans

proje dosyası öncesi ve sonrası

(Yinelenen) sarı referansı kaldırmak benim için düzeltti.

Umarım bu başka biri için işe yarar, bir süre beni deli etti.


0

Özel bir bölümünüz varsa, configSections altında yapılandırma etiketinin hemen altında olduğunu belirtmeniz gerekir.

Lütfen dönüşüm dosyalarınızı kontrol edin, gereksiz etiketleri kaldırdığınızdan emin olun. Sadece değişecek bölümün dönüşüm dosyalarında olması gerekir. gerekmiyorsa, dönüştürme dosyalarında config bölümünü belirtmeyin. bu da soruna neden olur.

machine.config dosyasında sözdizimi hatası varsa, bu hata da beklenir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.