Sayfanın ilgili yapılandırma verileri geçersiz hata olduğundan istenen sayfaya erişilemiyor


479

IIS'de kendi asp.net web sitemi IIS'ye yüklemek istiyorum. Ama bunu yaptığımda, aşağıdaki hatayı alıyorum

HTTP Hatası 500.19 - Dahili Sunucu Hatası Sayfanın ilgili yapılandırma verileri geçersiz olduğu için istenen sayfaya erişilemiyor

Modül IIS Web Çekirdek
Bildirimi Bilinmeyen
İşleyici Henüz belirlenemedi
Hata Kodu 0x80070005
Yapılandırma Hatası Yetersiz izinler nedeniyle yapılandırma dosyası okunamıyor
Yapılandırma Dosyası \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

Birçok kez bu hata için bir çözüm aradım, ancak çözümlerin hiçbiri hatayı çözmedi.

Hesabımla ilgili bir sorunum var IUSR. Bu hesabı, özelliklerindeki "grup veya kullanıcı adları" nda göremiyorum web.config.

Sorun nedir?


3
Subversion ile bazı değişiklikleri geri aldıktan sonra bu sorunu yaşadım (bir tesadüf olabilir). Web.configDosyanın ACL'lerinin dizindeki diğer dosyalardan farklı olduğunu ve üst öğeden devralmadığını fark ettim . ACL mirasını etkinleştirdim ve her şey normale döndü.
ta.speot.

1
Benim çözümüm biraz farklıydı. Bazı Windows Server 2008 makinelerinde, site klasörü güvenlik izinleri içinde "IUSR" kullanıcısına değil "IIS_IUSRS" grubuna erişim izni vermeniz gerekir. Makinenizin konumuna gittiğinizden emin olun.
MacGyver

7
Bir siteyi IIS Url Yeniden Yazma modülü yüklü olmayan bir sunucuya taşımada bu sorunu yaşadım.
ScottE

1
Bu, sunucunuzu yeniden adlandırdıysanız olabilir. Bunu kendime yaptım - ve sonunda (Windows Server 2012 R2) içeri girip IIS APPPOOL \ SiteName'i yeniden eklemek zorunda kaldım ... ve% 100 bunu düzeltti.
Michael K. Campbell

2
ASP.NET Core uygulamalarını eski 2008 R2 sunucunuza dağıtmakta yeniyseniz , bu yanıtta öğrendiğim gibi .NET Core Windows Server Hosting paketini kurmanız gerekir
bkwdesign

Yanıtlar:


178

İleti, yapılandırma dosyanızın bir şekilde bozuk olduğunu söylüyor. Ancak, yapılandırma dosyasına gerçekten erişemediğini de söylüyor. Bu nedenle, yolsuzluk / geçerlilik eksikliği hakkındaki orijinal mesajı görmezden gelirim, çünkü bu sadece yetkilendirme eksikliğinden dolayı dosyayı okuyamamanın etkisidir.

Yapılandırma dosyasını okuyamamasının nedeni, web uygulamanızı çalıştıran işlemin dosyaya / dizine erişim izninin olmamasıdır. Bu yüzden web uygulamanızı çalıştıran işleme bu izinleri vermeniz gerekir.

Erişim hakları oldukça basit olmalıdır, yani en azından Oku ve uygulamanıza bağlı olarak belki de Yaz .

Yukarıda, IUSR vb web.config. Bununla, IUSR'nin dosyanın güvenlik sekmesinde listelenmediğini kastediyorsanız, bu iyi bir şeydir. IUSR'ye web.config için herhangi bir izin vermek istemez . IUSR rolü anonim bir internet kullanıcısıdır.

Dosya web.config gerektiği yalnızca uygulamanız aracılığıyla erişilebilir.

Sorun, hangi işletim sistemi ve IIS sürümünü kullandığınızı söylememenizdir, bu nedenle hangi adımları atmanız gerektiğini bildirmek zordur.

IIS 7.5'te, ApplicationPoolIdentity'nize izinlerin atanmamış olması nedeniyle alıntı yaptığınız hata iletisinin oluşması muhtemeldir . Web uygulamanız bir uygulama havuzuna aittir ve bu nedenle web uygulamanızın uygulama havuzunun çalıştığı işletim sistemi hesabına izin vermeniz gerekir. Bu genellikle NetworkService gibi bir şeydir, ancak bunu bir amaca yönelik hesap altında çalışacak şekilde özelleştirmiş olabilirsiniz. Daha fazla bilgi olmadan size yardımcı olmak zordur.


3
Bu izni programlı olarak verebilir miyim? Lütfen yardım et. Aynı problemim var.
pcbabu

1
Teşekkürler bu da benim sorunumu çözdü. Görünüşe göre kimliğe bürünmüş hesap için uygulamanın dizinine READ izinleri atanmasını gerekli kılan kimliğe bürünme kullanıyorum.
Cesar

2
"Kapsayıcıdaki nesneler numaralandırılamadı. Erişim reddedildi." afterI izni
veriyorum

4
Güvenlik izni vermeniz gereken klasöre sağ tıklayın. Bu, uygulamanızın yayınlandığı kök klasördür ve IIS web sitesi fiziksel yolunuzla aynı klasördür. Bağlam menüsünden özellikleri seçin ve Güvenlik sekmesine tıklayın. Kullanıcıları düzenleyin ve ardından Kullanıcı ekleyin. Konumlar düğmesini tıklayın ve üstteki simgeyi seçin (Bilgisayarım gibi görünür). Metin alanına IIS_IUSRS girin. Tüm bağlam menüleri kapanana kadar OK (Tamam) düğmesine art arda basın. Web sitenizi yeniden başlatın ve siteye tekrar gidin.
Jeremy Ray Brown

Web sitesinin fiziksel yolundaki izinleri bulmak istemiyorsanız, herkese izin verin! Bu, tüm fiziksel dosya / klasör erişimi için hızlı ve önerilmez bir hack'tir.
Jeremy Ray Brown

662

Bu, site IIS URL Yeniden Yazma modülünü kullanacak şekilde yapılandırılmış ancak yüklü değilse de olabilir.


Bu benim için .. yeniden yazma bölümü kaldırıldı (ki bu gerçekten bir şekilde ihtiyaç yoktu) ve her şey iyi.
Andrew Patterson

129
Güzel oynadı. <rant> IIS, hatalı biçimlendirilmiş XML hakkında şikayet etmek yerine "<rewrite> 'in ne olduğunu anlamıyorum" hatası verirse iyi olur. </rant>
Evan Haas

7
Çok teşekkür ederim - bu da benim sorunumdu. <rewrite> etiketini görüyorsanız, yeniden yazma modülü kullanılıyor. Biri, IIS'nin neyin ayrıştırılamadığını söyleyebileceğini düşünür.
scolestock

6
Komut satırında eksik bağımlılığı çözmek için güzel kolay yolu; webpicmd / Yükle / Ürünler: UrlRewrite2
cirrus

2
Sadece web.config dosyanız bir <rewrite> etiketi içeriyorsa, yeniden yazma modülüne ihtiyacınız olduğunu belirtmek isterim.
Jono

436

Sonunda , sorunum için bir çözüm buldum. IIS'de onay kutusunu işaretlemediğim için ASP.net hesabı IIS yöneticisinde görünmedi. Bunu Windows 7'de yapmak için aşağıdaki adımları izleyin:

  1. Kontrol panelini aç
  2. "Program" bağlantısını tıklayın (programları kaldırmayın)
  3. "Windows özelliklerini aç / kapat" bağlantısını tıklayın
  4. Açılır pencerede “Internet Information services IIS” i bulun ve düğümünü genişletin
  5. “World Wide Web Service” düğümünü genişletin
  6. “Uygulama Geliştirme Özellikleri” düğümünü genişletin
  7. “ASP.NET” onay kutusunu işaretleyin
  8. Sonra ok düğmesine tıklayın

Şimdi, IIS yöneticisinde ASP.net hesabını göreceksiniz ve varsayılan olarak IIS hesabını göreceksiniz. Şimdi, ASP.net web sitenizi “belgemden” IIS'nin erişim iznine sahip olduğu başka bir yere (yani bilgisayarınızdaki başka bir bölüme) taşımalısınız. Şimdi, IIS yöneticisinden web sitenize göz atın ve çalışması gerekir.

Çözüm için Jeff Turner'a çok teşekkürler.


Birisi bu rol hizmetini aylardır çalışan bir sunucudan kaldırmış olmalıdır. Asla çift kontrol etmek için tahmin olurdu. Ugh.
SixOThree

Daha da kolay, komut satırını kullanarak:dism /NoRestart /Online /Enable-Feature /FeatureName:IIS-ASPNET
i3arnon

1
Teşekkürler ... Bu kadar düşük hata mesajlarına sahip bir ürünü nasıl serbest bırakabilirler?
Vland

<handlers> bölümüm WebDAV'a bir başvuruda bulundu ve IIS'ye WebDAV özelliğini ekledikten sonra çalıştı.
Andy Roberts


47

Aynı sorunu yaşıyordum, işte benim için işe yarayan çözüm.

  1. IIS Yöneticisi
  2. Bu Web Sitesini sağ tıklayın
  3. İzinleri Düzenle
  4. Güvenlik sekmesinden 'IIS_IUSRS' kullanıcısı eklendi
  5. 'IIS_IUSRS' Kullanıcısına tam izin verdi
  6. Uygulama Havuzunun Kimliğini 'ApplicationPoolIdentity' olarak ayarlayın

2
Bunu üretim amaçları için tavsiye etmem. IIS_IUSRS'in anonim bir hesap olduğuna inanıyorum ve web sitesinin tüm dizin yapısına tam erişim sağlayacaksınız
Jacques

Ben de suçlu olduğunu anladım gibi ben de günümü kurtardı Ben de başka bir kimlik kimliği kullanılan ve çalıştı!
Yakın

39

İçin Visual Studio (VS) geliştiriciler: As Harvey Darvey, Savage ve Snives ederek, ima Uygulama Ana Bilgisayar Yapılandırma yanlış uygulama fiziksel yolu işaret ediyor olabilir. Yanlışsa fiziksel yolu değiştirmek için /.vs/config/applicationhost.config içinde virtualDirectory öğesini arayın .

resim açıklamasını buraya girin

PhysicalPath'in doğru olduğundan emin olun :

resim açıklamasını buraya girin


3
Aynı şeyi project => properties => project url => sanal dizin oluştur'da da yapabilirsiniz, istendiğinde doğru fiziksel yola yeniden eşlemek için evet'i seçin
Adam Diament

Benim durumumda biraz farklıydı ama yönümü verdi, çok teşekkür ederim, bana çok yardımcı oldu :)
Bharat

24

Facepalm uyarısı:

Bu hatayı yapılandırma dosyasının yolu yanlışsa da alırsınız. IIS'de fiziksel yolun doğru girildiğinden emin olmak için iki kez kontrol edin.


Bunun bir varyantı olarak, sitenin kendisinin yolunu yanlış ayarladığım ortaya çıkıyor. Yanlışlıkla yerel sistem dosya yolu yerine eşlenen ağ paylaşımından geçtim.
David

2
Aynı avuç içi anı vardı. Web sitemi bir alt klasöre taşıdım ve yeni yolu IIS'ye doğru yazdığımı düşündüm. Site hala altında tüm gerekli klasörleri vb altında IIS ağacında gösterilen gibi görünüyordu, bu nedenle bunun nedeni olarak tetiklemedi. İzinleri vb. Sıfırladım, çözmedim. Daha sonra bu konuyu konuşarak geçen bana önerildi ... ve şimdi 1 saat boşa zaman sonra tekrar bir çalışma sitesi var!
ladygargar

Bu yol nerede ayarlanır? Bu benim sorunum gibi görünüyor ama değiştirmem gereken şeyi bulamıyorum
Drew Rochon

Geliştirme ortamında: .vs> config> applicationhost.config Dosyada bir GIT yoksaymadığınızda ve geliştiriciler teslim etmeye başladığında bu olur.
Savage

Benim fiziksel yolumda fazladan bir eğik çizgi vardı - shesh. Bunun için teşekkürler
J King

18

Yerel makinede IIS_IUSRS için izinler atamanız gerekir (ancak IUSR için atamanız gerekmez, aslında izinleri açıkça reddetseniz bile çalışır).

İzinleri atamak için, klasörü sağ tıklayın ve güvenlik sekmesinde doğru izinleri verdiğinizden emin olun ve kullanıcı listede yoksa "EKLE" yi tıklayın ve IIS_IUSRS girin (ve "alan" altında yerel bilgisayar seçiliyse veya ad alanına YourLocalComputerName girin \ IIS_IUSRS ) ve sonra başlayabilirsiniz.

İsterseniz IIS_IUSRS grubuna izin atamak yerine, uygulama havuzuna genel olarak "IIS APPPOOL \ app pool name " olmalıdır.


Aşağıdaki web sitesinden: iis.net/learn/get-started/planning-for-security/… IIS_IUSRS grubu, IIS_WPG grubunun yerini alır. Bu yerleşik grup, gerekli tüm dosya ve sistem kaynaklarına erişebilir, böylece bu gruba eklendiğinde bir hesap uygulama havuzu kimliği olarak sorunsuz bir şekilde hareket edebilir.
Jeremy Ray Brown

Hala erişim reddedildi.
GreySage

15

Sadece çip için, aynı tür bir hata aldım ve sorunum oldukça basitti: .NET Core Hosting Bundle eksikti. Aracı yükledikten ve sunucuyu yeniden başlattıktan sonra, iyiydi.

Asp.net çekirdeğini barındırmak için kılavuzu Windows'ta bulabilirsiniz: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2


.NET Core SDK'yı yüklemek, ASP.NET Core web sitelerinizi IIS altında çalıştırmak için yeterli değildir . Bu hatayı çalışarak birkaç saat geçirdim ...
Ryan Rodemoyer

Yeterli olmayabilir, ancak bu hatayı çözer. Benim için çalıştı. Tüm .NET bileşenlerinin zaten dahil edildiğini varsaymıştım.
pcalkins

Evet, buraya "Çalışma Zamanı ve Barındırma Paketi" ni yüklemek zorunda kaldı: dotnet.microsoft.com/download/dotnet-core/2.2
Kirk Woll

Tamam, "müstakil" paket başlığına uymuyor.
SLCH000

11

Aynı şey benimle de oldu, Bir web sitesi seçtiğinizde IIS 7'nin sağ bölmesindeki Bağlantı dizelerini çift tıklatarak bunu kontrol etmeyi deneyin.

URL yeniden yazma kurallarını kullandığınız ve ilgili bileşen yüklü olmadığı için size bir hata verecektir (web yapılandırma dosyasıyla ilgili bir sorun var).

“IIS 7 için Microsoft URL Yeniden Yazma Modülü 2.0” yükleyin ve bu sorununuzu çözmelidir


9

Burada hiçbir şey benim için işe yaramadı, bu komutu başka bir SO cevabında buldum ve sorunumu çözdü. Komut istemini yönetici olarak başlatmanız ve şu komutu çalıştırmanız yeterlidir:

run->cmd

run "c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

Kredi bilgileri: User Vicxx


Vs 2017 geliştirme ortamımı düzeltmek için Windows 7 özelliklerimden IIS'yi kaldırmak zorunda kaldım. Geri ekleyin, gereken her şeyi güncelleyin ve yükleyin. Son adım, Visual Studio 2017 komut istemiyle regiis'i çalıştırmaktı. Şimdi hepsi tekrar çalışıyor, bunu düzeltmek için 8 saat zaman harcadı. uck ..
Warren LaFrance

7

Windows Server 2012, IIS 8.5'te bu sorunu çözmek için bu adımları gerçekleştiriyorum. Diğer sürümler için de çalışmalıdır.

  1. Sunucu yöneticisine gidin, rol ve özellik ekle'yi tıklayın
  2. Roller bölümünde şunları seçin: Web Server
  3. Güvenlik alt bölümü altında her şeyi seçin (kullanmadığımız için özet, IP kısıtlamaları ve URL yetkilendirmesini hariç tuttum)
  4. Uygulama Geliştirme seçim altında .NET Extensibility 4.5, ASP.NET 4.5ve her ikiISAPI girişleri
  5. Özellikler bölümünde seç: NET 3.5,.NET 4.5 ,ASP.NET 4.5
  6. Web sunucusu bölümünde aşağıdakileri seçin: Web Server(tümü), Management Tools(IIS Yönetim Konsolu ve Yönetim Hizmeti), Windows

6

Bu sorunu benim için çözen başka bir olasılık:

IIS -> İzinleri Düzenle -> Güvenlik Sekmesi -> "Kullanıcılara" uygun izinleri verin (veya kurulumunuza bağlı olarak IIS_IUSRS)


6

Ehm. Sitemi / dosyalarımı farklı bir klasöre taşıdım. IIS web sitesindeki yolu değiştirmeden.

Şimdi hepiniz gülebilirsiniz.


6

Uygulama havuzunun çerçevenin doğru sürümüne ayarlandığından emin olun. Ayrıca aspnet, IIS_IUSRS veya IUSR kullanıcılarınızın uygulamanın dizinine okuma erişimine sahip olduğundan emin olmanız gerekir.


Bunu nasıl yapabilirim?? "aspnet veya IUSR kullanıcılarınızın uygulamanın dizinine okuma erişiminden emin olun"
Yasmeen

5
C: \ Users \ Yasso \ Documents \ Visual Studio 2008 \ WebSites \ WebSite5 \ 'e gidin ve WebSite5 dizininin IUSR ve IIS_IUSRS grubu için okuma izinlerine sahip olduğundan emin olun. Bunu dizine sağ tıklayıp özellikleri seçip güvenlik sekmesine giderek yaparsınız.
Jeff Turner

Ama grup veya kullanıcı adında IUSR ve IIS_IUSRS grubu görmüyorum !! sorunun ne olduğunu bilmiyorum ??
Yasmeen

1
şebeke servisi için bir seçenek görüyor musunuz? varsayılan olarak, masaüstünüzde çalışırken uygulama havuzunun kullanacağı şeydir (doğru bir şekilde hatırlarsam)
Jeff Turner

1
güvenlik sekmesine gittiğinizde, klasörü sağ tıkladıktan ve özellikleri seçtikten sonra. "Düzenle" düğmesiyle başka bir pencere açması gereken "Ekle" düğmesini tıklayın. "Düzenle" düğmesini tıklayın ve metin kutusuna "Ağ Servisi" yazın, kullanıcıyı bulmalı ve listeye eklemelidir. Ardından, kullanıcının en azından Okuma ayrıcalıklarına sahip olduğundan emin olun.
Jeff Turner


4

Bu, hem web.config dosyamda hem de IIS web sitemde aynı adda (index.aspx gibi) varsayılan bir belgeye sahip olduğumda da oldu. IIS web sitesinden girişi kaldırdım ve aşağıdaki gibi web.config girdisini tuttum:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...

4

Bazen bu iletinin IIS ortamınızdaki bileşenleri, örneğin web.config izinleri yerine belirli bir çerçeve veya dinamik sıkıştırma gibi bir IIS özelliği eksik olabilir.

Bu durumda, Microsoft Platform Installer'ı yüklemek ve kullanmak ve bu eksik bileşenleri yüklemek için bir çözüm olabilir - hata günlüğü ve mesaj size söylemediği için tam olarak eksik olan şeyleri saplamanız gerekebilir.


Dikkat: dinamik sıkıştırma 'windows özellikleri' listesinde ve MPI değil
Simon_Weaver

@Simon_Weaver aslında dinamik sıkıştırma , MPI'nın sizin için yükleyeceği ve 2012'den beri, belki de o zamandan önce olduğu şeyler listesinde. şerefe.
eagle779

4

Bu SO'da belirtildiği gibi IIS'nin 'Uygulama Geliştirme' alt bileşenini yüklemeyi deneyin

  • Arama kutusuna "Başlat düğmesi" ni tıklayın, "Windows özelliklerini aç veya kapat" girin
  • özellikler penceresinde, "İnternet Bilgi Hizmetleri" ni tıklayın.
  • Tıklayın: "World Wide Web Hizmetleri"
  • Tıklayın: "Uygulama Geliştirme Özellikleri"
  • Özellikleri kontrol edin (etkinleştirin). CGI hariç hepsini kontrol ettim.

resim açıklamasını buraya girin


3

Web sitesi klasörünüz için izin ayarlamanız veya bunları wwwroot klasörüne kopyalamanız gerekir :) - İzin verilirse, 2 yolunuz vardır: + Web Sitesi klasörünüze sağ tıklayın + Veya IIS'de Web Sitenize sağ tıklayın => İzni düzenle ve Ekle izni (IUSR - varsayılan iis kullanıcısı) İyi şanslar ;-)


Benim durumumda - iis 8, Kimliği Doğrulanmış Kullanıcılar.
scion

3

Benim durumumda, uygulamanın fiziksel yolunun IIS'de var olmayan bir klasöre işaret etmesi neden oldu.

uygulama ayarı ekran görüntüsü


3

Web.config dosyamı prod'den kopyaladım, http S'ye yeniden yazılan yeniden yazma kuralları hariç prod ile ilgili olmayan her şeyi değiştirdim .

Bu kurallar kaldırıldı ve iyi çalıştı.


2

Oldukça basit, IIS'nin web.config'nize erişimi yok. Siteyi belgeler klasörünüzden çıkararak başlardım. R / w izinlerine sahip olduğunu doğrulayın.


Siteyi Belge'den başka bir yere
taşıyorum

2

Ben de benzer bir sorun vardı ve web.config dosyasındaki bazı bölümleri yorumlayarak düzeltti.

Proje daha önce .Net 2.0'da oluşturulmuş ve dağıtılmıştır. Net 3.5'e geçtikten sonra istisna atmaya başladı.

Çözümler:

Yapılandırma dosyanız "< sectionGroup name =" system.web.extensions > " içeriyorsa , yorum yapın ve bu bölüm zaten Machine.config altında mevcut olduğundan çalıştırın.


2

Web.config dosyanızda bir synax hatası veya sorununuz varsa bu hatayı alabilirsiniz.

Benim için, AppSettings'de kullandığım bir URL'de başıboş bir ve işareti vardı.


Ben de bir & - & amp; kodlama vardı bir Bağlantı Dizesi bir Parola ile aldım ; beni bu sorunu aştı. Teşekkürler, burada İzinlerle ilgili olmayan tek cevap bu.
Jeremy Thompson

2

IIS 7.5 hata sayfasında, sayfanın altındaki 'Daha fazla bilgi görüntüle'yi tıklarsınız ve bu durumda sizi aşağıdaki Microsoft bağlantısına götürür:

http://support.microsoft.com/kb/942055

0x80070005 Hata Kodu izinlerle ilgili gibi görünüyor ve Çözüm 2'deki adımları izleyerek, ilgili klasörlerde izinlerle doğru hesapları atamak için Yöntem 2'nin düzeltilmesi gerekiyor - Ben karşılaşana kadar 3 gün geçirdim, hemen sonra çalıştım.


2

eşlenen sürücülerle bu sorunu var, IIS eşlenen sürücülerle çalışmaz. Sadece eşleştirilmemiş sürücüyü kullanın.


2

Web sitenizin bulunduğu klasörü keşfedin ve bir klasör daha "aspnet_client" alacağınızı görün ve bu klasörü sizin için çalışın.

Bunu denedim, sorunum çözüldü.

Sizin için çalışıyorsa, lütfen cevap verin, böylece başka bir vücut da çözüm alacaktır.


1

Bunların hiçbiri benim için işe yaramadı, ama sonunda benim için çalışan bir çözümüm var:

web.config dosyasında bu satırı kaldırın:

<compilation debug="true" targetFramework="4.5"/>

bu satırı kaldırma

<compilation debug="true"/>

1

Yerel hesap IIS_IUSRS'yi güvenliğe ekleyin ve genel olarak erişimi okuyun / yürütün. benim durumumda işe yarıyor.

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.