Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C#’ta “An unhandled exception of type ‘System.Configuration.ConfigurationErrorsException’ occurred in System.Configuration.dll” Hatası ve Çözümü

Bir proje üzerine çalışırken App.config dosyası üzerinde işlemler gerçekleştiriyordum.Projemi derleyip çalıştırdığım esnada hızlı bir şekilde aşağıdaki hatayı aldım.(Aşağıdaki görselde konuyu sadeleştirmek için farklı bir örnek projede alınan hata gösterilmektedir)

An unhandled exception of type
Alınan hata metinsel olarak aşağıdaki gibidir.

An unhandled exception of type ‘System.Configuration.ConfigurationErrorsException’ occurred in System.Configuration.dll

Additional information: Yapılandırma sistemi başlatılamadı

Onca zamandır verdiğin emek ve çaba üzerine hiç görmediğim ve şahit olmadığım bir hatayla karşılaştım.Hayır hep kullandığım App.config dosyasından böyle bir hata neden alabilirdim ki?Velhasıl anında internetten aramalara başladım.Taramadığım site kalmadı.Bu hatanın çözümü nedir bilen yok.Şu bir gerçek bu hatayı doğru düzgün alan olmadığı için en nihayetinde internettende umudumu kestim.Derken hataya bir çözüm buldum ve çözümden ziyade hata sebebinin ne kadar ironik olduğunu sizlere belirtmek isterim.Hatanın sebebi, ne mantıksal ne de programatik bir hata.

Aşağıdaki satırlarda hatamızın sebebini ve çözümünü sizlere sunmadan önce bahsetmem gereken bir husus var.Hatamızın çözümü App.config dosyasında.Lakin bu hata sebebinin bana ironik gelmesinin sebebi App.config, web.config gibi konfigürasyon dosyalarının teknik özelliklerine tam hakim olamamamda olabilir.Ben, bana yetecek kadar bu yapıları biliyor ve kullanıyorum.O yüzden bir teknik kural ihlalinin akıbetinde alınan bir hata bana çok ilginç gelmiş olabileceğinden dolayı, “yiğiti öldür hakkını yeme” prensibinde hareket ederek “bildiklerime sığınarak, bilmediklerimi ört bas edecek” kadar kendini aşamamış bir insan olmadığımdan bu durumu sizlerin bilmesini istiyorum.

Her neyse biz konumuzda dönelim.

Projemizdeki App.config dosyamıza bakalım nasıl bir hata varmış?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="OrnekKey" value="OrnekDeger"/>
  </appSettings>
  <configSections>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

Yukarıdaki gördüğünüz App.config dosyasında bir hata var.Lakin “Nerede?” diye soruyor olabilirsiniz 🙂

Hatanın sebebi, “configSections” nodeu “appSettings” nodunun altında olmasıdır.
Hatanın çözümü, “configSections” nodeu “appSettings” nodunun üstünde olması gerekiyor.

Yani,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
  <appSettings>
    <add key="OrnekKey" value="OrnekDeger"/>
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

gibi 🙂
ya da

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="OrnekKey" value="OrnekDeger"/>
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

gibi.Yani “configSections” nodeunu silincede hata ortadan kalkıyor.

Evet, bu ironik hatanın sebep sonuç ilişkisinin basitliğine değinmiş ve çözümünü öğrenmiş olduk.

Bu hatanın, App.config ve web.config gibi konfigürasyon dosyalarının tekniksel özelliklerine bağlı bir hata olduğunu düşünüyorum.Yani farklı node yapıları arasında sırasal ilişkiler olması artık bu konuyu okuduktan sonra pek muhtemel geliyor.Yani bir tek “appSettings” ve “configSections” nodeları arasında olan bir ilişkiden ibaret olmayacağını yansıtmaya çalışıyorum ve bilmediğim bu konular üzerinde teori ortaya atıp en azından yarın benzer durumlarda(yani hatalarda) bu konuyu mantıksal açıdan ele almayı aklımın bir ucuna not alıyorum. 🙂

Vee hepinize iyi çalışmalar diliyorum…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. Faruk dedi ki:

    TEŞEKKÜRLER FAYDALI OLDU

Faruk için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir