IIS 500.19 Configuration Data Invalid hatası, IIS’in bir web sitesi veya uygulamanın yapılandırmasını okuyamadığını, doğrulayamadığını ya da uygulayamadığını gösterir. Sorun çoğunlukla uygulamanın web.config dosyasında görülse de sunucu genelindeki ApplicationHost.config, bölüm kilitleri, dosya izinleri, yinelenen modül tanımları veya eksik IIS bileşenleri de aynı hatayı üretebilir. Bu nedenle uygulama kodunu değiştirmeden önce ayrıntılı hata ekranındaki Error Code, Config File ve Config Source alanlarını esas almak gerekir.
Bu rehber, Windows Server üzerinde IIS 7 ve sonraki sürümlerde görülen hatayı güvenli biçimde ayıklamaya odaklanır. Amaç, yapılandırmayı körlemesine silmek, IIS’i yeniden kurmak veya tüm bölümleri global olarak açmak değil; hatalı yapılandırma katmanını belirleyip en dar kapsamlı düzeltmeyi uygulamaktır.
Belirti ve kapsam: IIS 500.19 ne anlama gelir?
Tarayıcıda genellikle HTTP Error 500.19 – Internal Server Error ve Configuration data is invalid metni görünür. Hata, IIS uygulamayı başlatmadan önce oluştuğu için ASP.NET, PHP veya uygulama günlüklerinde hiçbir kayıt bulunmayabilir. Aynı sunucudaki diğer sitelerin çalışması, sorunun sadece ilgili sitenin klasöründe veya uygulama düzeyindeki yapılandırmada bulunduğuna işaret eder.
Ayrıntılı hata sayfası uzaktan görüntülenemiyorsa, siteye sunucu üzerinden yerel olarak erişin veya Windows Olay Görüntüleyicisi kayıtlarını inceleyin. Üretim ortamında ayrıntılı IIS hata mesajlarını internet geneline açmak, dosya yolları ve yapılandırma bilgilerini ifşa edebileceğinden uygun değildir.
IIS 500.19 Configuration Data Invalid hatası için hızlı teşhis özeti
- Ayrıntılı hata ekranından Error Code, Config File, Config Source ve satır numarasını kaydedin.
- Hatanın tek bir siteyi mi, aynı uygulama havuzundaki siteleri mi, yoksa tüm IIS sitelerini mi etkilediğini belirleyin.
web.configXML söz dizimini ve yakın zamanda yapılan dağıtım/değişiklikleri kontrol edin.- Hata koduna göre kilit, yetki, yinelenen kayıt veya eksik özellik ihtimalini daraltın.
- Yapılandırma dosyalarında değişiklik yapmadan önce yedek alın; canlı ortamda bakım penceresi planlayın.
Yaygın hata kodları ve doğru başlangıç noktası
| Hata kodu | Olası anlamı | İlk kontrol |
|---|---|---|
0x8007000d |
Geçersiz veri veya bozuk XML/yapılandırma | Config Source satırları, XML yapısı, kodlama ve geçersiz öznitelikler |
0x80070021 |
Yapılandırma bölümü üst seviyede kilitli | Kilitli bölüm adı ve bu bölümün uygulama düzeyinde gerekli olup olmadığı |
0x80070005 |
Erişim engellendi | web.config, site klasörü ve üst klasörlerdeki NTFS izinleri |
0x800700b7 |
Yinelenen collection girdisi | Çift modül, handler, MIME türü veya başka add kaydı |
0x80070032 |
Desteklenmeyen yapılandırma bölümü/özniteliği | Eksik IIS rol hizmeti, .NET bileşeni veya uyumsuz modül |
Bu kodlar teşhis yönü verir; kesin neden, hata ekranındaki yapılandırma dosyası ve kaynak satırlarıyla birlikte değerlendirilmelidir.
Olası nedenler ve güvenli teşhis komutları
1. web.config içinde XML veya yapılandırma hatası
Eksik kapanış etiketi, yanlış iç içe geçmiş eleman, kopyalanmış yapılandırma bloğu, geçersiz karakter veya hedef sunucuda tanınmayan bir öznitelik 0x8007000d ile sonuçlanabilir. Hata ekranındaki Config Source alanı genellikle soruna yakın satırları gösterir.
Yönetici olmayan bir PowerShell oturumunda, dosyanın iyi biçimli XML olup olmadığını şu şekilde doğrulayabilirsiniz. Bu kontrol IIS ayarlarının anlamsal olarak doğru olduğunu değil, XML yapısının okunabildiğini doğrular:
$config = 'C:\inetpub\wwwroot\OrnekSite\web.config'
[xml](Get-Content -LiteralPath $config -Raw) | Out-Null
'XML yapısı okunabildi.'
Komut hata verirse dosyayı hata mesajındaki satır civarında inceleyin. Dosyayı farklı bir sunucudan veya uygulama sürümünden kopyalamadan önce IIS sürümü, yüklü rol hizmetleri ve uygulama gereksinimlerinin eşleştiğinden emin olun.
2. IIS yapılandırma bölümü kilitli
0x80070021 hatası, örneğin system.webServer/handlers, modules veya security/authentication bölümünün sunucu seviyesinde kilitlendiğini; ancak uygulamanın bunu web.config içinde değiştirmeye çalıştığını anlatır. Bölümü doğrudan açmak, aynı sunucudaki diğer sitelerin yapılandırma sınırlarını etkileyebilir.
Önce hatada adı geçen bölümün uygulama için gerçekten gerekli olup olmadığını doğrulayın. Uygulama tarafından eklenmiş fakat kullanılmayan bir bloksa, uygulamanın web.config dosyasından kaldırmak daha dar kapsamlı olabilir. Bölümün uygulama düzeyinde kullanılmasına bilinçli olarak izin verilecekse, yükseltilmiş Komut İstemi’nde IIS yapılandırma aracını kullanın:
%windir%\system32\inetsrv\appcmd.exe unlock config /section:system.webServer/handlers /commit:apphost
Bu örnek yalnızca handlers bölümü içindir. Hata başka bir bölüm bildiriyorsa bölüm adını rastgele değiştirmeyin; ayrıntılı hata mesajındaki tam bölüm yolunu kullanın. Paylaşımlı sunucularda veya çok sayıda sitenin bulunduğu ortamlarda bu işlem öncesinde değişiklik kaydı ve bakım değerlendirmesi yapılmalıdır.
3. Yinelenen modül veya handler tanımı
0x800700b7 çoğunlukla aynı modülün, handler’ın veya koleksiyon öğesinin hem üst yapılandırmada hem de web.config içinde tekrar eklenmesinden kaynaklanır. Hata satırında yer alan <add ...> kaydının adı önemlidir.
Önce aynı ada sahip kaydı ilgili web.config içinde arayın. Ardından, uygulamanın dağıtım paketindeki yapılandırmanın IIS sürümüyle uyumlu olup olmadığını denetleyin. Sorunu bastırmak için tüm <modules> veya <handlers> koleksiyonunu temizlemek, uygulamanın gerekli miras ayarlarını kaybetmesine yol açabilir. Yalnızca belirlenen yinelenen kaydı kaldırın veya uygulamanın desteklediği, tekilleştirilmiş yapılandırmayı dağıtın.
4. NTFS izinleri veya paylaşımlı yapılandırma erişimi
0x80070005 durumunda IIS, web.config dosyasını ya da bu dosyaya ulaşmak için gereken üst klasörleri okuyamıyor olabilir. Site fiziksel yolunu ve uygulama havuzunun kimliğini IIS Manager içinden doğrulayın. Ardından ilgili dizindeki izinleri görüntüleyin:
icacls "C:\inetpub\wwwroot\OrnekSite"
icacls "C:\inetpub\wwwroot\OrnekSite\web.config"
Uygulama havuzu varsayılan kimliği kullanıyorsa, salt okuma gereksinimi için hedef klasöre özel olarak aşağıdaki biçimde izin verilebilir:
icacls "C:\inetpub\wwwroot\OrnekSite" /grant "IIS AppPool\OrnekHavuz:(RX)"
Dikkat: Havuz adını kendi ortamınızdaki adla değiştirin. Uygulamanın dosya yüklemesi veya günlük yazması gerekiyorsa, yalnızca yazması gereken ayrı klasöre gerekli en düşük izni verin; web kökünün tamamına gereksiz Modify veya Full Control tanımlamayın. Sunucuda Shared Configuration etkinse, yerel ApplicationHost.config yerine ağ paylaşımındaki yapılandırma dosyası ve paylaşım erişim kimliği de incelenmelidir.
5. Eksik IIS rol hizmeti, .NET bileşeni veya barındırma modülü
Uygulamanın web.config dosyası sunucuda yüklü olmayan bir modüle veya bölüme başvuruyorsa 0x80070032 görülebilir. Özellikle ASP.NET Framework uygulamalarında IIS ASP.NET/.NET genişletilebilirlik bileşenleri, ASP.NET Core uygulamalarında ise uygulamanın hedeflediği barındırma modülü ve çalışma zamanı uyumluluğu önemlidir.
Windows Server’da yüklü IIS özelliklerini görüntülemek için PowerShell kullanabilirsiniz:
Get-WindowsFeature Web-Server,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter | Format-Table DisplayName,InstallState
Bu cmdlet Windows Server içindir. Windows istemci sürümlerinde IIS özellikleri DISM veya “Windows özelliklerini aç veya kapat” ekranından yönetilir. Eksik bir özelliği kurmadan veya bir barındırma paketini onarmadan önce uygulama sürümüyle uyumluluğu ve planlı yeniden başlatma gereksinimini kontrol edin.
Adım adım güvenli çözüm akışı
1. Bakım hazırlığı yapın. Canlı sitede yapılandırma değişikliği kesintiye yol açabilir. Mümkünse bakım penceresi belirleyin. Site kökü ve yapılandırma dosyalarının geri dönüş kopyasını alın. IIS’in merkezi yapılandırmasında değişiklik yapılacaksa mevcut IIS yapılandırmasını da yedekleyin:
%windir%\system32\inetsrv\appcmd.exe add backup Before-50019-Fix
Bu komut IIS yapılandırması için yedek oluşturur; uygulama dosyaları, içerik ve veritabanları için ayrıca uygun yedek alınmalıdır.
2. Hata ayrıntısını sınıflandırın. Config File bir site altındaki web.config dosyasını gösteriyorsa önce o dosyaya odaklanın. Yol %windir%\System32\inetsrv\config\applicationHost.config ise değişiklik sunucu geneline etki edebilir; düzeltmeyi daha dikkatli planlayın.
3. En küçük değişikliği uygulayın. XML hatasında yalnızca bozuk satırı düzeltin; yinelenen kayıtta yalnızca çift girdiyi kaldırın; kilit hatasında önce gereksiz uygulama ayarını kaldırmayı değerlendirin. İzin sorununda yalnızca gereken kimliğe, gereken klasörde en düşük yetkiyi verin.
4. Uygulama havuzunu geri dönüştürün. Başarılı yapılandırma değişiklikleri çoğu durumda IIS tarafından algılanır. Gerekirse IIS Manager üzerinden yalnızca ilgili uygulama havuzunu recycle edin. Tüm sunucuyu etkileyen iisreset komutunu, diğer sitelerde yaratacağı kesinti nedeniyle ilk seçenek olarak kullanmayın.
Çözümü doğrulama ve kayıtları inceleme
Önce hata veren URL’yi, ardından uygulamanın giriş sayfası ve kritik bir işlevini test edin. Başarılı bir yanıt, yapılandırmanın yüklendiğini gösterir; ancak kimlik doğrulama, dosya yazma veya yönlendirme gibi çalışma zamanı davranışlarını tek başına doğrulamaz.
Windows Olay Görüntüleyicisi’nde Windows Logs > Application altında IIS, WAS ve uygulama kaynaklı kayıtları kontrol edin. Ayrıca IIS günlükleri varsayılan olarak C:\inetpub\logs\LogFiles altında tutulur; ancak 500.19 isteği işlem hattına ulaşmadan engellendiğinde günlükte beklediğiniz ayrıntı bulunmayabilir. Değişiklikten sonra hata kodunun değişmesi, ilk yapılandırma engelinin aşıldığını fakat ikinci bir sorun olabileceğini gösterir; yeni hata mesajını ayrıca değerlendirin.
Tekrarını önleme
web.configdosyalarını sürüm kontrolünde tutun ve dağıtımdan önce XML doğrulaması yapın.- Geliştirme, test ve üretim sunucularında IIS rol hizmetleri ile uygulama çalışma zamanlarını mümkün olduğunca eşleştirin.
- Sunucu seviyesinde bölüm kilidi açmadan önce hangi uygulamaların bundan etkileneceğini belgelendirin.
- Uygulama havuzlarına geniş klasör izinleri vermek yerine yazılabilir klasörleri ayırın.
- Yapılandırma değişikliklerinden önce IIS yedeği ve uygulama geri dönüş planı oluşturun.
Sonuç: IIS 500.19 Configuration Data Invalid hatasını kalıcı biçimde gidermek
IIS 500.19 Configuration Data Invalid hatası için güvenli çözüm, hata ekranındaki kodu ve yapılandırma kaynak satırını izlemektir. 0x8007000d XML veya geçersiz ayara, 0x80070021 bölüm kilidine, 0x80070005 erişim iznine, 0x800700b7 ise yinelenen kayda işaret eder. Yedek alıp yalnızca hatanın gösterdiği katmanda, en dar kapsamlı değişikliği yapmak hem kesinti hem de güvenlik riski oluşturma ihtimalini azaltır.
Sık sorulan sorular
IIS 500.19 hatası uygulama kodundan mı kaynaklanır?
Genellikle hayır. IIS, uygulama kodunu çalıştırmadan önce yapılandırmayı yüklerken hata verir. Ancak uygulamanın dağıtım paketiyle gelen hatalı veya sunucuyla uyumsuz web.config bu durumu tetikleyebilir.
web.config dosyasını silmek sorunu çözer mi?
Dosyayı silmek bazı ayarları devre dışı bırakıp hatayı geçici olarak gizleyebilir; fakat yönlendirme, kimlik doğrulama, modül ve uygulama ayarları kaybolabilir. Önce yedek alın, sonra hata satırındaki belirli ayarı düzeltin.
0x80070021 hatasında her bölümü unlock etmek doğru mudur?
Hayır. Yalnızca ihtiyaç duyulan ve etkisi değerlendirilmiş bölümü açın. Mümkünse uygulamanın gereksiz yapılandırma bloğunu kaldırmak, global kilit politikasını değiştirmekten daha güvenlidir.
iisreset çalıştırmak gerekli mi?
Çoğu yapılandırma değişikliğinde gerekli değildir. Önce yalnızca ilgili uygulama havuzunu recycle edin ve URL’yi test edin. iisreset, sunucudaki tüm IIS sitelerini etkileyebilir.
Hata sadece yeni yayımlanan sitede görülüyorsa ilk ne kontrol edilmelidir?
Yayımlanan web.config dosyasındaki Config Source satırını, hedef sunucunun IIS özelliklerini ve uygulamanın kullandığı modül/çalışma zamanı sürümünü kontrol edin.