IIS 500.19 Configuration Data Invalid hatası, Internet Information Services’in bir sitenin veya uygulamanın yapılandırmasını okuyamadığını gösterir. Hata çoğunlukla uygulamanın web.config dosyasındaki geçersiz XML, sunucu düzeyinde kilitli bir yapılandırma bölümü, hatalı NTFS izinleri ya da aynı yapılandırma girdisinin birden çok kez tanımlanmasından kaynaklanır. Sorun yalnızca bir sitede görülüyorsa öncelikle o sitenin kök dizinindeki web.config dosyasını incelemek gerekir; sunucudaki tüm siteler etkileniyorsa IIS’in merkezi yapılandırması da değerlendirilmelidir. Bu rehber, ekranda görülen ayrıntılı hata kodunu temel alarak IIS 500.19 sorununu veri kaybı ve gereksiz kesinti riski oluşturmadan teşhis edip gidermenize yardımcı olur.
Belirti ve kapsam: IIS 500.19 ne anlama gelir?
Tarayıcıda genellikle HTTP Error 500.19 – Internal Server Error ve The requested page cannot be accessed because the related configuration data for the page is invalid metni görünür. Ayrıntı ekranındaki Error Code, Config Error, Config File ve Config Source alanları çözüm için en önemli verilerdir.
500.19, uygulama kodu çalışmadan önce oluşur. Bu nedenle ASP.NET, PHP veya uygulama günlüklerinde hata görünmeyebilir. Sorun IIS yapılandırma katmanındadır:
- Yalnız bir uygulama veya site etkilenebilir.
- Aynı application pool altındaki birden çok uygulama etkilenebilir.
- Tüm siteler etkileniyorsa
applicationHost.config, paylaşımlı yapılandırma veya IIS bileşenleri gündeme gelir.
Hızlı teşhis özeti
Değişiklik yapmadan önce aşağıdaki kontrol listesini izleyin. Birden fazla düzeltmeyi aynı anda uygulamak, asıl nedeni gizleyebilir.
- 500.19 ayrıntı sayfasındaki hexadecimal hata kodunu ve belirtilen dosya yolunu kaydedin.
- Etkilenen kapsamı belirleyin: tek URL, tek site, bir application pool veya tüm IIS siteleri.
web.configdosyasını yedekleyin ve XML yapısını, ilgili satır numarasını inceleyin.- Dosya ve klasör izinlerini, uygulama havuzu kimliği üzerinden kontrol edin.
- Kilitli bölüm, yinelenen koleksiyon kaydı veya eksik IIS modülü olasılığını hata koduna göre değerlendirin.
- Yalnızca değişiklikten sonra ilgili siteyi yeniden test edin; tüm IIS’i gereksiz yere yeniden başlatmayın.
IIS 500.19 Configuration Data Invalid hatasında hata kodunu yorumlama
Aşağıdaki kodlar sık görülür. Aynı 500.19 ekranı farklı bir kök nedene işaret edebileceğinden, ekrandaki kodu görmeden doğrudan bir yapılandırma satırını silmeyin.
| Hata kodu | Yaygın anlam | İlk güvenli kontrol |
|---|---|---|
0x8007000d |
Yapılandırma verisi geçersiz; XML sözdizimi, hatalı öğe veya bozuk içerik olabilir. | Config Source satırları ve XML yapısı |
0x80070021 |
Bir yapılandırma bölümü üst düzeyde kilitlenmiştir. | Kilitli bölüm ve gerekli olup olmadığı |
0x80070005 |
Erişim engellendi; IIS kimliği dosyayı okuyamıyor olabilir. | NTFS izinleri ve uygulama havuzu kimliği |
0x800700b7 |
Yinelenen koleksiyon girdisi vardır. | Çift add, handler veya module tanımı |
0x800700c1 |
Geçersiz çalıştırılabilir görüntü; modül/DLL mimarisi veya yükleme sorunu olabilir. | Modül yolu, 32/64 bit uyumu ve Event Viewer |
Loglar ve güvenli teşhis komutları
Önce hatanın hangi yapılandırma dosyasını hedeflediğini doğrulayın. Siteye ait web.config çoğunlukla uygulamanın fiziksel kök dizinindedir. Sunucu düzeyindeki IIS yapılandırma dosyası ise varsayılan olarak aşağıdaki konumdadır:
%windir%\System32\inetsrv\config\applicationHost.config
Bu dosyayı doğrudan düzenlemeyin. Sunucu seviyesinde değişiklik zorunluysa bakım penceresi planlayın ve önce yedek alın. IIS yapılandırmasının yedeğini AppCmd ile oluşturmak için Yönetici olarak açılmış Komut İstemi kullanın:
%windir%\System32\inetsrv\appcmd add backup Before-50019-Fix
Yedekleri listelemek için:
%windir%\System32\inetsrv\appcmd list backup
Belirli bir sitenin etkin yapılandırmasını listelemek, yapılandırmanın hangi seviyede devralındığını anlamaya yardımcı olur:
%windir%\System32\inetsrv\appcmd list config "SiteAdi" /config /xml
SiteAdi yerine IIS Manager’daki site adını yazın. Komutun çıktısı hassas bağlantı dizeleri veya diğer gizli ayarları içerebilir; çıktıyı destek kaydına ya da ortak kanallara göndermeden önce gözden geçirin.
Olay günlüklerinde IIS ve Windows Process Activation Service kayıtlarını incelemek için PowerShell’i Yönetici olarak açın:
Get-WinEvent -FilterHashtable @{LogName='System'; StartTime=(Get-Date).AddHours(-2)} |
Where-Object { $_.ProviderName -match 'IIS|WAS|W3SVC' } |
Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message |
Format-List
Tarayıcıdaki 500.19 sayfasında görünen satır numarası çoğu zaman en hızlı teşhis yoludur. Örneğin Config Source altında işaretlenen <add ... /> satırını, üst ve alt satırlarıyla birlikte değerlendirin; yalnızca işaretli satırı silmek her zaman doğru değildir.
Olası nedenler ve adım adım güvenli çözüm
1. web.config içinde geçersiz XML veya desteklenmeyen yapılandırma
0x8007000d ile birlikte beklenmeyen karakter, kapanmayan XML etiketi, yanlış öznitelik veya sunucuda kurulu olmayan bir IIS/ASP.NET modülüne ait bölüm görülebilir. Hata genellikle hatalı bir dağıtım, dosyanın elle düzenlenmesi veya farklı sunucu ortamından taşınan web.config sonrasında başlar.
- Uygulama kökündeki
web.configdosyasını aynı dizin dışında güvenli bir konuma kopyalayın. - 500.19 sayfasındaki Config File yolunun gerçekten beklediğiniz dosyayı gösterdiğini doğrulayın. Alt uygulamaların kendi
web.configdosyaları olabilir. - Dosyayı XML doğrulama desteği olan bir editörde açın; kapanmayan etiket, çift tırnak ve özel karakter hatalarını kontrol edin.
- Config Source alanındaki satırı, uygulamanın desteklediği sürümdeki bilinen çalışan yapılandırma ile karşılaştırın.
- Yakın zamanda eklenen modül, handler veya framework bölümü varsa, uygulama dokümantasyonuna göre gerekli Windows/IIS bileşeninin kurulu olup olmadığını doğrulayın.
Üretim dosyasını boş bir varsayılan web.config ile değiştirmek yerine, önce son çalışan sürümden kontrollü karşılaştırma yapın. Uygulamaya özgü ayarları kaybetmek, hatayı farklı bir uygulama sorununa dönüştürebilir.
2. Kilitli yapılandırma bölümü: 0x80070021
Bu hata, uygulama düzeyindeki web.config dosyasının bir ayarı değiştirmeye çalıştığını ancak ilgili bölümün sunucu düzeyinde kilitlendiğini belirtir. Sık örnekler system.webServer/handlers, modules, security/authentication ve rewrite bölümleridir.
Önce uygulamanın bu ayarı yerelde tanımlamak zorunda olup olmadığını belirleyin. Merkezi olarak yönetilmesi gereken güvenlik ayarlarını yalnızca hata ortadan kalksın diye kilitten çıkarmayın. Uygulama gerçekten bölüm düzeyinde yapılandırma gerektiriyorsa, değişikliği Yönetici Komut İstemi’nde yapın:
%windir%\System32\inetsrv\appcmd unlock config /section:system.webServer/handlers
Komuttaki bölüm adı, hata ekranında işaretlenen gerçek bölüm olmalıdır. Örnekteki handlers yerine tahminle başka bir bölüm yazmayın. Kilidi açmak aynı sunucudaki alt uygulamaların bu bölümü kendi web.config dosyalarında değiştirebilmesine izin verebilir. Çok kiracılı veya sıkı değişiklik denetimi olan ortamlarda etkiyi değerlendirin.
3. Yinelenen handler, module veya collection girdisi: 0x800700b7
Bu hata çoğunlukla aynı ada sahip bir modülün, handler’ın veya başka bir koleksiyon öğesinin hem üst yapılandırmada hem de uygulama yapılandırmasında tekrar eklenmesiyle oluşur. Örneğin yayınlama profili tarafından eklenen bir kayıt, sunucuda zaten tanımlı olabilir.
Çözüm, iki kaydın da silinmesi değil, hangi yapılandırma seviyesinin bu kaydın sahibi olduğunun belirlenmesidir. web.config içindeki ilgili koleksiyonu ve IIS’in etkin yapılandırma çıktısını karşılaştırın. Uygulama, üstten gelen kaydı kaldırmak zorundaysa ilgili IIS yapılandırma şemasının desteklediği <remove name="..." /> yaklaşımı kullanılabilir; ancak yalnızca doğru öğe adı ve uygulamanın gereksinimi doğrulandıktan sonra.
4. Dosya ve klasör izinleri: 0x80070005
Bu kod, IIS’in yapılandırma dosyasını veya üst klasörü okuyamadığını gösterebilir. Site kök dizininde uygulama havuzu kimliğinin okuma ve yürütme erişimi bulunmalıdır. Uygulama havuzunun hangi kimlikle çalıştığını IIS Manager’dan Application Pools > ilgili havuz > Advanced Settings > Identity bölümünde kontrol edin.
Varsayılan ApplicationPoolIdentity kullanımında kimlik genellikle IIS AppPool\UygulamaHavuzuAdi biçimindedir. Aşağıdaki komutu yalnızca site kökü ve doğrulanmış havuz adı için uygulayın:
icacls "D:\Web\SiteKoku" /grant "IIS AppPool\UygulamaHavuzuAdi:(OI)(CI)RX"
RX, okuma ve yürütme iznidir. Uygulamanın yükleme, günlük veya önbellek klasörlerine yazması gerekiyorsa, tüm site köküne geniş yazma izni vermek yerine yalnızca gerekli alt klasörlere en düşük ayrıcalıkla izin tanımlayın. Mevcut ACL’leri değiştirmeden önce dışa aktarmak için:
icacls "D:\Web\SiteKoku" /save SiteKoku-acl.txt /t /c
5. Modül, DLL veya 32/64 bit uyumsuzluğu: 0x800700c1
Geçersiz görüntü hatası, yerel IIS modülünün yanlış mimaride olması, dosyanın bozulması veya bağımlılığının eksik olmasıyla ilişkilendirilebilir. Uygulama havuzunda Enable 32-Bit Applications ayarını değiştirmeden önce uygulamanın ve tüm yerel bağımlılıkların mimarisini doğrulayın. Rastgele 32 bit moda geçmek, çalışan diğer bileşenleri etkileyebilir.
Hata mesajında modül veya DLL yolu yer alıyorsa dosyanın gerçekten varlığını, sürümünü ve uygulama dağıtım notlarını kontrol edin. Windows Event Viewer’daki aynı zaman damgalı WAS/IIS kayıtları genellikle eksik bağımlılık veya yüklenemeyen modül hakkında ek bilgi verir.
Değişiklik sonrası doğrulama
Her düzeltmeden sonra önce yalnızca etkilenen URL’yi yerel olarak test edin. Bu yöntem DNS, CDN veya dış yük dengeleyici etkilerini ayırır:
Invoke-WebRequest -Uri "http://localhost/" -UseBasicParsing | Select-Object StatusCode, StatusDescription
Site bir host header kullanıyorsa uygun ana bilgisayar adıyla test edin:
Invoke-WebRequest -Uri "http://localhost/" -Headers @{Host='ornekalanadi.tld'} -UseBasicParsing |
Select-Object StatusCode, StatusDescription
Ardından uygulamanın giriş sayfasını, kimlik doğrulama akışını ve yakın zamanda değişen işlevi test edin. IIS Manager’dan ilgili siteyi yeniden başlatmak çoğu yapılandırma değişikliği için yeterlidir. iisreset tüm IIS sitelerini etkileyebileceği için ancak planlı bakım penceresinde ve gerekçe varsa kullanılmalıdır.
Tekrarını önleme
web.configdosyalarını kaynak kontrolünde tutun; üretime el ile yapılan değişiklikleri kayıt altına alın.- Dağıtımı önce test ortamında yapın ve hedef sunucudaki IIS sürümü, modüller ve .NET barındırma bileşenleriyle uyumluluğu doğrulayın.
- Uygulama havuzu kimliğine tüm kökte yazma izni vermek yerine, yazılabilir klasörleri ayrı tutun.
- Sunucu düzeyindeki bölüm kilitlerini belgeleyin; uygulama gereksinimi olmadan kilit açmayın.
- IIS yapılandırmasında değişiklikten önce AppCmd yedeği alın ve geri dönüş adımını bakım planına ekleyin.
Sonuç: IIS 500.19 Configuration Data Invalid hatasını kod üzerinden çözün
IIS 500.19 Configuration Data Invalid hatası tek bir düzeltmeye sahip değildir; güvenli çözüm, hata ekranındaki kod ve yapılandırma satırından ilerlemektir. 0x8007000d için XML ve geçersiz ayarları, 0x80070021 için kilitli bölümleri, 0x80070005 için izinleri, 0x800700b7 için yinelenen kayıtları inceleyin. Sunucu kapsamındaki değişikliklerden önce yedek almak, yalnızca gerekli bölümü değiştirmek ve her adımın ardından hedef URL’yi doğrulamak hizmet kesintisi riskini azaltır.
Sık sorulan sorular
IIS 500.19 hatası uygulama kodundan mı kaynaklanır?
Genellikle hayır. IIS uygulamayı çalıştırmadan önce yapılandırmayı işleyemediği için hata oluşur. Yine de uygulama dağıtımı sırasında eklenen hatalı web.config girdisi tetikleyici olabilir.
web.config dosyasını silmek sorunu çözer mi?
Geçici olarak hatanın bu dosyada olduğunu gösterebilir; ancak uygulamaya ait handler, yönlendirme, bağlantı veya güvenlik ayarları kaybolabilir. Önce yedekleyin, hata satırını inceleyin ve kontrollü düzeltme yapın.
0x80070021 için tüm IIS bölümlerini unlock etmek güvenli midir?
Hayır. Yalnızca uygulamanın zorunlu olarak değiştirmesi gereken belirli bölümü açın. Kilit kaldırma, aynı sunucudaki uygulamaların yapılandırma yetkisini genişletebilir.
iisreset çalıştırmak 500.19 sorununu düzeltir mi?
Yapılandırma hatasını tek başına düzeltmez ve diğer siteleri de kesintiye uğratır. Önce hatalı yapılandırmayı veya izin sorununu giderin; gerekiyorsa yalnızca ilgili siteyi yeniden başlatın.