Yetersiz izinler nedeniyle yapılandırma dosyası okunamıyor


354

Geçenlerde asp.net sitemi IIS ile barındırmaya çalışırken bir hatayla karşılaştım. Birçok kişinin yemin ettiği bir çözüm buldum.

Çözüm:

  1. Klasördeki dosyalara Okuma izniyle IIS_IUSRS ekle
  2. IIS kimlik doğrulama yöntemini BasicAuthentication olarak değiştirin
  3. web sitesini yenileyin. Çalışacak

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

Web.config dosyama ne ekleyebilirim? Daha önce hiç düzenlemek zorunda kalmadım. Şu anki içeriği:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Benim hatam:

Yapılandırma Hatası: Yetersiz izinler nedeniyle yapılandırma dosyası okunamıyor
Yapılandırma Dosyası: \? \ C: \ Kullanıcılar ***** \ Belgeler \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
Lütfen yeniden yazma modülünü yükleyin. Kendinize biraz zaman kazandırın
regisbsb

Benim çözümüm komutları yönetici ayrıcalıklarıyla açılan komut satırından çalıştırmak olacaktır. Bunu yapmak için, komut istemini bulun, sağ tıklatın ve yönetici ayrıcalıklarıyla çalıştır'ı tıklatın.
David Waddington

Diğer yanıtlara ek olarak, şifreleme dosya sisteminin (EFS) IIS'yi de etkileyebileceğini unutmayın.
G-Wiz

Bu reklamı şimdi yerel ana bilgisayar bir şifre istiyor, en yakın bu çalışma için şimdiye kadar aldığım teşekkürler
Paul Ledger

1
Benim için IIS_IUSR yoktu, Kimliği Doğrulanmış Kullanıcı için de aynısını yaptım ve işe yaradı
Bhanu Chhabra

Yanıtlar:


544

Orada web.config ile hiçbir sorun . Web siteniz bir işlem altında çalışıyor. İis'de o sürecin kimliğini tanımlayabilirsiniz. Kimlik Web sitenizin o uygulama havuzu olarak çalışır ( Ağ Hizmetleri, yerel sistem , vs.), erişim iznine sahip ve web.config dosyasını okumalısınız.

Güncelleme:

Bu güncellenmiş cevap yukarıdakiyle aynıdır, ancak biraz daha uzun ve basit ve geliştirilmiştir.

Her şeyden önce : yapılandırma dosyanızdaki hiçbir şeyi değiştirmeniz gerekmez. Tamam . Sorun, Windows dosya izinlerinde .

Bu sorunlar oluşur çünkü uygulamanız olamaz erişim ve okuma web.config dosyası.

Dosyayı IIS_IUSRS grubu tarafından erişilebilir yapın . Sadece sağ web.config tıklayın ve tıklama özelliklerini altında, güvenlik eklemek, sekme IIS_IUSRSAdları .

Peki bu IIS_IUSRS olayı nedir?

Kişisel web sitesi olan bir exe gibi dosyada. Herhangi bir exe dosyası gibi, bir kullanıcı tarafından başlatılmalıdır ve o kullanıcıya atanan izinlere göre çalışır .

Sitenizin içinde başlatıldığında IIS , Uygulama Havuzu web sitesinin ilişkili bir kullanıcı ( Ağ Hizmetleri, Yerel Sistemi , vb ...) (ve IIS değiştirilebilir)

Eğer derken IIS_IUSRSAdları , bunun anlamı , herhangi bir kullanıcı ( Ağ Hizmetleri, Yerel sistem sitenizin olarak çalıştığını, Etc ...).

Ve @Seph belirtilen aşağıdaki açıklama : Bilgisayarınız bir etki alanı içindeyse , unutmayın IIS_IUSRS grubu olan yerel grup . Ayrıca bu kullanıcıyı bulmaya çalışırken konumu kontrol ettiğinden, şirket etki alanına değil yerel bilgisayara ayarlandığından emin olun.


79
Diğerleri için, varsayılanın genellikle olduğunu IIS_IUSRSve bu kullanıcıyı bulmaya çalışırken konumu kontrol etmesini sağlamak için kurumsal bir etki alanına değil yerel bilgisayara ayarlanması gerekir.
Seph

3
İyi yanıt, ve burada bir etki alanında Win7 üzerinde IIS7 çalıştıran ek bir ipucu, 'Adları Denetle ...' ile bulmaya çalışırsanız yerel grupta IIS_IUSRS bulamayabilirsiniz. Endişelenmeyin - IIS_IUSRS yazın ve Tamam'a basın, hepsi iyi olacak.
Sekiz Bit Gurusu

2
Bir sitenin yolu için paylaşılan bir sürücünüz varsa ne olur? Bunun bir etkisi var mı? Bunu paylaşılan sürücülerle nasıl çalışırsınız?
Kevin

2
Bunu IUSR için yapmak zorunda kaldım. IIS_IUSRS bir nedenden dolayı benim için çalışmadı.
Todd

13
Bu iş parçacığında tartışılan hatayı düzelttikten sonra IIS 7'de yeni bir ASP.Net web sitesi kurmaya çalışırken bir sonraki engeliniz olarak "HTTP Hatası 401.3 - Yetkisiz" yetkilendirme hatasıyla karşılaşabilirsiniz. Anonim kimlik doğrulamayı etkinleştirdiyseniz, "IUSR" (IIS tarafından varsayılan olarak ayarlanır) yerine anonim kullanıcı kimliğini Uygulama havuzu kimliği olarak değiştirin. Bu ayarın düzenleme penceresini almak için, "Kimlik Doğrulama" IIS özelliğinin IIS özellik görünümünde Eylemler bölmesinden "Düzenle" eylemini kullanın.
RBT

72

web.configDosyada aynı izin sorunu gibi görünen vardı .
Ancak, sorunum, URL'ye yeniden yazma kuralları içerdiği ve IIS URL yeniden yazma modülünü yeni sunucuya yüklemediğim için IIS'nin yapılandırma dosyasını yükleyememesinden kaynaklandı.

Çözüm: Yeniden yazma modülünü takın.
Umarım bu birini birkaç saat kurtarır.


Evet. Bunu kullandığım önceki sunucu ssl olmayan ssl yolunu yeniden yazdı .. IIS'den büyük bir hata iletisi için çok fazla. error::) +1 SSL gerektirmek yerine, URL'yi https olmadan bağlı birisinin olması durumunda HTTPS'ye yeniden yazdım. Ne büyük bir muamma.
Piotr Kula

teşekkür ederim!!! saatlerce izin ile faffing ve sonunda bu aşağı oldu!
Carl Woodhouse

IIS URL yeniden yazma modülünü nasıl kurabilirim?
B. Clay Shannon

2
Bu da benim meselemdi - teşekkürler! Yeniden yazma modülünü kurmak için aşağıdaki sayfadan indirin: iis.net/downloads/microsoft/url-rewrite IIS'yi kapatın, yükleyin, IIS'yi yeniden başlatın (sadece güvenli olmak için).
Tyler Forsythe

2
@ B.ClayShannon Web Platformu Yükleyicisini kullanın, IIS Yeniden
Yazımını aratın

64

Editörün notu: Bu cevabın söylediklerini yapmak TEHLİKELİDİR ! LocalSystem hesabı bir ...

Tamamen güvenilir hesap, yönetici hesabından daha fazla. Tek bir kutuda bu hesabın yapamayacağı hiçbir şey yoktur ve ağ olarak makine olarak erişim hakkına sahiptir (bu, Active Directory gerektirir ve makine hesabına bir şeye izin verir)


Dan Kimliği Değiştirme ApplicationPoolIdentity için LocalSystem çalışma yaptı).

IIS 7.5 ile win7 64 kullanıyorum

7.5 ve Win 7'de Uygulama Havuzu Kimliği hakkında daha fazla bilgi

resim açıklamasını buraya girin


IIS 6 için de yararlı yanıt. Microsoft Web sitesinde Uygulama Havuzu Kimliğini değiştirme hakkında daha fazla bilgiyi burada bulabilirsiniz: microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/…
Manuel Alvarez

22
Bu hizmeti verdiğiniz erişim nedeniyle bu değişikliği yapmak bir güvenlik riskidir: msdn.microsoft.com/en-us/library/windows/desktop/…
WhiteKnight

Bu benim sorunum burada gibi görünüyor ve LocalSystem için Uygulama Havuzu Kimliği değiştirmek açıklandığı gibi çalıştı!
Vasily Hall

21
Sunucuda bırakılan boşluk güvenlik deliği nedeniyle bunu aşağı oylama. ASLA yerel sistem hesabı altında IIS gibi halka açık hizmetleri çalıştırmamalısınız !!!! Temelde sunucuyu hackleyebilecek herkes için anahtarları krallığa teslim ediyorsunuz. Ciddi bunu yapmayın.
Dimesio

5
OMG Bu cevap güvenlik için ÇOK YANLIŞ. Ilımlı müdahale gereklidir. Bu KORKUNÇ bir fikirdir. Sorgu dizesi ... patlaması ... üzerinde belirtilen herhangi bir dosya erişimini herkes web.config dosyasını OKUYOR ve IIS bunu dünyaya mutlu bir şekilde sunacaktır. BU CEVAP KULLANMAYIN.
enorl76

47

Site kök klasörünü başka bir kullanıcıyla paylaşmaya çalıştığımda da aynı sorunu yaşadım. Bazı klasörler iznini kaybetti. Bu yüzden Afshin Gh tarafından önerilen IIS_IUSRS grubuna izin ekleme adımlarını izledim . Sorun şu ki bu grup benim için mevcut değildi. Windows 7 kullanıyorum.

Ne yaptım bazı adımları değiştirdim:

  1. Üst klasörü sağ tıklayın (izni kaybedenler),
  2. Özellikler => Güvenlik => "Grup veya kullanıcı adları:"
  3. Düzenle ... seçeneğini tıklayın.
  4. "Klasörünüz için izin" penceresi açılacaktır.
  5. "Grup veya kullanıcı adları:" bölümünde EKLE ... btn,
  6. tip Authen ve basın Kontrol Adları,
  7. Grup adının tamamını göreceksiniz " Kimliği Doğrulanmış Kullanıcılar " olarak
  8. Tamam => uygula'ya basın.
  9. Bu yine ayrıcalıkları etkinleştirmelidir.

Bu benim için çalıştı.


2
Bu benim için çalıştı. Bu kabul edilen cevap olmalı. Diğer yöntemleri denedim, işe yaramıyorlar.
GunWanderer

1
Diğer tüm çözümler bu kadar işe yaramayacak denedim.
jenna_3108

1
Tamam, sanırım bunun neden işe yaradığına dair bir açıklamam var . Bazı geliştiriciler kodlarını C:\ ie C:\Devveya C:\Codevb. Adreslerinde barındırır . Güvenlik grubu alt klasörlere Authenticated Usersverilir C:\ ve alt klasörlere yayılır. Ancak, C:\Usersklasörde bu yayılma durur. Bu nedenle, kodlarını ana klasörde barındıran benim gibi geliştiricilerin Authenticated Users, IIS'nin çalışması için bu IIS kök klasörlerine erişim izni vermesi gerekir .
Colin

İsimleri kontrol et'i tıkladığımda, bana kimlik bilgilerini soruyor. Burada hangi kullanıcı kimlik bilgilerinin beklendiğinden emin değilim.
RSB

18

Web.config dosyasında herhangi bir değişiklik yapmanız gerekmez.

Sorun dosya sistemi izinleridir. Dosya izinleriniz IIS_IUSRS kullanıcısının web.config dosyasına (veya muhtemelen dosyalardan herhangi birine) erişmesine izin vermiyor. IIS_IUSRS hesabının erişmesine izin vermek için pencerelerde dosya izinlerini değiştirin.


1
Benzer bir sorun yaşadım. IIS_IUSRS kullanıcısı hiç bulamazsa, konumu kontrol edin. Benimki şirket alan adına düştü, bu yüzden hemen bulamadım çünkü nerede göründüğünü kontrol etmeyi unuttum.
jgreep

@Mystere Man Bende aynı sorun var. İzinleri değiştirdim ve denedim. Yine de aynı hatayı alıyorum. :(
Rauf

"(veya muhtemelen dosyalardan herhangi biri)" benim için çalışır, Web.config IIS_IUSRS hesabına erişim izni yeterli değil, ben sitedeki tüm dosyalara erişim sağlamak için etkinleştirmeniz gerekir yardımcı olur.
Tuyen Nguyen

2
Bunu IUSR için yapmak zorunda kaldım. IIS_IUSRS benim için çalışmadı.
Todd

Teşekkürler. Web uygulaması klasöründe 'Herkes'e tam izin verdim ve çalışıyor.
Minh Nguyen

16

Dosyayı IIS_IUSRS grubu tarafından erişilebilir yapın . Web.config dosyanızı sağ tıklayın, özellikleri genişletin ve güvenlik sekmesi altına IIS_IUSRS ekleyin. Gruba okuma / yazma erişimi verin.

Grup olduğunda DEĞİL mevcuttur, tarafından IIS_IUSRSAdları yerine BilgisayarAdý \ IIS_IUSRS


+1 İyi ipucu. Kabul edilen cevap iyidir, ancak bilgisayar adınızı 'IIS_IUSRS'in önüne eklemeniz gerekebileceğini söylemeyi ihmal eder;
Ralph Lavelle

Bu ("Grup müsait olmadığında") umutlarım arttı, ancak bilgisayar adını ("IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS") önermeme rağmen yine de aynı hatayı alıyorum. Tam bilgisayar adını da denedim, ancak geçerli bir kullanıcı olarak kabul bile etmeyecekti.
B. Clay Shannon

15

Üst klasöre gidin, sağ tıklayın ve Özellikler'i seçin . Güvenlik sekmesini seçin, izinleri düzenleyin ve Ekle'yi tıklayın . Gelişmiş'i ve Şimdi Bul'u tıklayın . IIS_IUSRS'i seçin ve Tamam'ı ve tekrar Tamam'ı tıklayın . Yaz kontrolünü yaptığınızdan emin olun . Tamam'ı ve Tamam'ı tıklayın tekrar.

İş bitmiş!


19
İhtiyaç duyulan her şey Okuma olduğunda Yazma erişimi önermede ne var? / downvoted
TristanK

2
Sahip olduğum tek IIS * IIS_WPG
B. Clay Shannon

1
@ B.ClayShannon Me de. Ben sadece IIS_WPG var
Fortune

13

IIS_IUSRS'e izin verdiğinizde , Web Uygulamanızın IIS / Kimlik Doğrulama bölümünde, Anonim Kimlik Doğrulama Kimlik Bilgilerinin IUSR yerine Uygulama Havuzu Kimliği kullandığını kontrol etmelisiniz .

resim açıklamasını buraya girin


Bu arayüzü nereden edinebilirim?

Web Uygulamanızın Özellikler Görünümü sekmesinde: Kimlik Doğrulama
Carlos

Bu cevap kabul edilen cevap nedeninin bir parçası olmalıdır, bu olmadan da web sitesinin klasörünün erişim listesine IUSR eklemeniz gerekir
Laurent S.

7

Nedense web.config dosyanız salt okunur olarak ayarlanmıştır. Web.config dosyasının salt okunur seçeneğinin işaretini kaldırın.


İzniniz tam erişime sahipse ve hala hatayı alıyorsanız, bu doğru yanıttır (y).
Vasil Valchev


4

Takımdaki diğer geliştiricilerle aynı kurulumu korumak için D: ila C: arasında bir eşleme oluşturmak için subst kullandım. Bu da bana açıklananlarla aynı hataları verdi. Bunu kaldırmak benim için düzeltti.


3

Kabul edilen çözüm benim için olmadı. Git repo kullanıyorum ve aşağıdaki klasöre kopyalandı

c:\users\myusername\source\repos\myWebSite

Yeni IIS web sitesi yaptım ve yola yönlendirdim. Kabul edilen çözümde önerilen iis_iusrs izinleri yoktu. İzinleri eklediğimde hala işe yaramadı.

Yalnızca 'Kullanıcılar' grubuna aşağıdaki izinleri verdiğimde ve kalıtım web.config için izinleri basamaklandırdığımda çalışmaya başladı. Muhtemelen saldırı yüzey alanını azaltmak için bunu sadece web.config dosyasına uygulamış olmalıdır.

Kullanıcı Ödemeleri


Aynı durum vardı. Bu yardımcı oldu.
Roemer

2

Apppool'da belirli bir kimlikle çalışan bir web sitemiz vardı, ancak bu kullanıcıya web.config dosyasını içeren klasöre okuma erişimi verdikten sonra çalışır. Bunu 'herkes' kullanıcısını okuduktan sonra izledik ve her şey yolunda gitti.


2

Benim için hata yerel makinemde Hata Ayıklama sırasında ortaya çıktı ve web sitesi derlenirken .NET Framework tarafından başlatılan temel web.config ile ilişkili olduğu ortaya çıktı. C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config dosyamın tanınmayan bir öğesi vardı (folderLevelBuildProviders). Bunu düzeltmek 500.19 hatasını düzeltti.

Bkz. IIS Yöneticisi, .NET 4 Uygulamalarında .NET Derlemesi'ni yapılandıramaz


2

İşlem Modeli Kimliğini LocalSystem olarak değiştirmek bu sorunu benim için düzeltti. Uygulama havuzunu sağ tıklayıp "Gelişmiş Ayarlar" ı seçerseniz bu ayarı bulabilirsiniz. IIS 7.5 çalıştırıyorum.


2

Web.Config => Sekme Güvenliği => Düğme Düzenle => Düğme Ekle => Düğme Gelişmiş => Düğme Şimdi Bul => Arama sonuçlarında grubunuzu seçin (bizim durumumuzda "IIS_IUSRS") => Tamam => Tamam => Tamam


2

Bu, IIS uygulamasında , ters eğik çizgiler yerine eğik çizgi içeren bir Fiziksel Yol içeren bir Sanal Dizin olduğunda bize oldu/\ . Bu, sürekli teslimat sürecimiz sırasında yanlışlıkla IIS için bir powershell yönetim API'sı kullanılarak yapıldı.

Hatalı Yapılandırma Örneği - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

physicalPathÖzelliğin eğik çizgi içermediğinden /, yalnızca ters eğik çizgi içermediğinden emin olun\

Düzeltilmiş Yapılandırma Örneği - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

1
Benim durumumda fiziksel yolun bir çift sırt eğik çizgisi vardı C:\inetpub\MySite\\MyService. Tek bir ters eğik çizgiye değiştirmek işe yaradı
Ben Anderson

2

Bunu uygulama havuzu kullanıcısı için klasöre okuma izni ekleyerek çözdüm (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

Küçük bir arka plan: Sunucumuz, uygulama kullanıcısının olması gereken daha fazla izni olduğu (yerel yönetici) klasik hata kullanılarak saldırıya uğradı.

Bunu düzeltmek için, yalnızca uygulama klasöründe izinleri olan, minimum gerekli haklara sahip yeni bir etki alanı kullanıcısı oluşturduk ve bunu uygulama havuzu kullanıcısı olarak atadık. sorundan daha çok etkilendik ve bu sorunlarımıza bir çözümdü.


2

Projenizi C'den başka bir sürücüye kaydırın: Aynı hatayla benim için çalıştı.


2

Bu, uygulamanız sanal bir dizindeyse ve dosya yolu eşlenmiş bir sürücü ise oluşabilir.

Yerel bir sürücüye giden dosyaların yolunu değiştirirseniz, bu sorun çözülecektir.


2

Verilen tüm cevaplar geçerlidir ve farklı koşullar altında çalışır.

Benim için Visual Studio'yu yeniden başlatmak işe yaradı.


1

"Yetersiz izinler nedeniyle yapılandırma dosyası okunamıyor" alıyordum. Hem ASP.NET 4.0 32bit hem de 64bit için IIS'de ISAPI ve CGI Kısıtlamaları reddedilecek şekilde ayarlanmıştır. İkisini de İzin verildi olarak işaretlemek sorunumu çözdü.


1

Yukarıdaki cevaplar yardımcı oldu, ancak bu kimseye yardımcı olur - ben bu tam bir sorun vardı ve ben (windows ağ) sitenin barındırıldığı kök klasörü paylaştığı ortaya çıktı. Paylaşımı öldürdük ve Kullanıcıların okuma / yürütme iznini ekledik ve yine işe yaradı.

Paylaşımın dağılmasından şüpheleniyorum.


0

Sanal Uygulama ile bu sorunu vardı. Tüm izinler ayarlandı. IIS_IUSRS, AppPoolIdentity ve ardından Herkes'e tam erişim izni verdi. Hiçbir şey çalışmadı. Yeniden başlatma, site ve IIS ama Hayır git.

Sanal uygulamayı sildi ve sıfırdan tekrar ekledi ve çalışmaya başladı.

Keşke neyi çözdüğünü bilseydim.


0

dosyanın salt okunur olarak işaretlenip işaretlenmediğini kontrol edin , IIS_IUSRS iznine rağmen aynı mesajı görüntüler.


0

Fiziksel klasörüm yerel sürücünün aksine bir ağ sürücüsünde bulunması nedeniyle ortaya çıkan bu hata iletisini aldım. Öyle görünüyor ki, bu tür sürücülerdeki izinler varsayılan olarak farklı olabilir. Örneğin, yerel sürücü konumu yerel bilgisayarın kullanıcılarına izin verirken, ağ konumu izin vermedi.

Ayrıca, kabul edilen cevap böyle bir dava için işe yaramaz. Yerel kullanıcılar veya IIS kullanıcıları, izin atamaya uygun değildi. Çözüm, fiziksel klasörü yerel sürücüye taşımaktı.


0

Aynı sorunu yaşadım ve burada cevap olarak yazılan her şeyi yaptıktan sonra hala çoğaldı. Sorunun ikinci yarısı, .NET'in "Windows özelliklerini aç veya kapat" altında kapatılmış olmasıydı


0

Bazen yeni bir sunucuysa, web.config dosyanızı okuyabilmesi için IIS'de ASP.NET özelliğini yapılandırmanız veya yüklemeniz gerekir.

Benim durumumda sebebi buydu.


0

Benim durumumda, eşlenmiş bir sürücüden (alt) sayfaları barındırmaya çalışıyordum. Sorun, alt öğenin hesabım altında çalıştırılması ve IIS kullanıcısının aynı sürücüyü görememesi


0

İzin verdim ve ICACLS.exe'yi kullandım ama işe yaramadı. Sonra fiziksel yolu değiştirdim ve başarılı bir şekilde çalıştı.

(IIS 8.5 Windows 2012 R2)

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.