Tidak dapat membaca file konfigurasi karena izin yang tidak memadai


354

Saya baru-baru ini mengalami kesalahan saat mencoba meng-host situs asp.net saya dengan IIS. Saya telah menemukan solusi yang disumpah oleh banyak orang.

Larutan:

  1. Tambahkan IIS_IUSRS dengan izin Baca pada file di folder
  2. Ubah metode otentikasi IIS ke BasicAuthentication
  3. menyegarkan situs web. Itu akan berhasil

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

Apa yang saya tambahkan ke file web.config saya? Saya belum pernah mengeditnya sebelumnya. Berikut isinya saat ini:

<?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>

Kesalahan saya adalah:

Kesalahan Konfigurasi: Tidak dapat membaca file konfigurasi karena izin yang tidak memadai
File Konfigurasi: \? \ C: \ Pengguna ***** \ Dokumen \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
Silakan lihat modul install rewrite.
hematlah

Solusi saya adalah menjalankan perintah dari baris perintah yang dibuka dengan hak administrator. Untuk melakukan ini, cari prompt perintah, klik kanan, dan klik jalankan dengan hak administrator.
David Waddington

Selain jawaban lain, perhatikan bahwa mengenkripsi sistem file (EFS) juga dapat mengganggu IIS.
G-Wiz

Saya melakukan iklan ini sekarang tuan rumah lokal meminta kata sandi, terdekat saya sudah sejauh ini bekerja berkat ini
Paul Ledger

1
Bagi saya tidak ada IIS_IUSR, saya melakukan hal yang sama untuk Pengguna yang Diotentikasi dan berhasil
Bhanu Chhabra

Jawaban:


544

Tidak ada masalah dengan web.config Anda . Situs web Anda berjalan dalam proses. Di iis Anda dapat menentukan identitas proses itu. The identitas bahwa situs web Anda kolam aplikasi berjalan sebagai ( Layanan Jaringan, sistem lokal , dll), harus memiliki izin untuk mengakses dan membaca file web.config.

Memperbarui:

Jawaban yang diperbarui ini sama seperti di atas, tetapi sedikit lebih lama dan lebih sederhana dan lebih baik.

Pertama-tama : Anda tidak perlu mengubah apa pun di file konfigurasi Anda. Tidak apa-apa . Masalahnya dengan izin file windows .

Masalah ini terjadi karena aplikasi Anda tidak dapat mengakses dan membaca file web.config .

Jadikan file dapat diakses oleh grup IIS_IUSRS . Hanya klik kanan web.config dan klik properties , di bawah keamanan tab, tambahkan IIS_IUSRS .

Jadi apa masalahnya IIS_IUSRS ini?

Anda situs web adalah seperti sebuah exe file yang. Sama seperti file exe apa pun, itu harus dimulai oleh pengguna dan berjalan sesuai dengan izin yang ditetapkan untuk pengguna itu.

Ketika situs Anda dimulai di IIS , Application Pool situs web Anda dikaitkan dengan pengguna ( Layanan Jaringan, Sistem Lokal , dll.) (Dan dapat diubah di IIS)

Jadi ketika Anda mengatakan IIS_IUSRS , itu berarti setiap pengguna ( Layanan Jaringan, Sistem Lokal , Dll ...) yang menjalankan situs Anda.

Dan seperti @Seph disebutkan dalam komentar di bawah ini : Jika komputer Anda menggunakan domain , ingat bahwa grup IIS_IUSRS adalah grup lokal . Juga pastikan bahwa ketika Anda mencoba untuk menemukan pengguna ini memeriksa lokasi itu harus diatur ke komputer lokal dan bukan domain perusahaan.


79
Bagi yang lain, ada baiknya menunjukkan bahwa standar biasanya adalah IIS_IUSRSdan untuk memastikan bahwa ketika Anda mencoba untuk menemukan pengguna ini memeriksa lokasi itu harus diatur ke komputer lokal dan bukan domain perusahaan.
Seph

3
Jawaban yang bagus, dan inilah tip tambahan - menjalankan IIS7 di Win7 di domain, Anda mungkin tidak menemukan IIS_IUSRS di grup lokal jika Anda mencoba mencari dengan 'Periksa Nama ...'. Jangan khawatir - cukup ketik IIS_IUSRS secara penuh dan tekan OK, dan semuanya akan baik-baik saja.
Eight-Bit Guru

2
Bagaimana jika Anda memiliki drive yang dibagikan untuk jalur situs? Apakah ini berpengaruh? Bagaimana Anda membuatnya bekerja dengan drive bersama?
Kevin

2
Saya harus melakukan ini untuk IUSR. IIS_IUSRS tidak berfungsi untuk saya karena alasan tertentu.
Todd

13
Saat mencoba menyiapkan situs web ASP.Net baru dari awal di IIS 7 dan seterusnya setelah Anda memperbaiki kesalahan yang sedang dibahas di utas ini, Anda mungkin menghadapi kesalahan otorisasi "Kesalahan HTTP 401.3 - Tidak Resmi" sebagai rintangan Anda berikutnya. Untuk memperbaikinya jika Anda telah mengaktifkan otentikasi anonim, maka ubah identitas pengguna anonim dari "IUSR" (ditetapkan sebagai default oleh IIS) ke identitas kumpulan aplikasi. Untuk mendapatkan jendela edit untuk pengaturan ini gunakan aksi "Edit" dari panel Tindakan di tampilan fitur IIS untuk fitur "Otentikasi" IIS.
RBT

72

Saya memiliki apa yang tampaknya menjadi masalah izin yang sama pada web.configfile.
Namun, masalah saya disebabkan oleh IIS gagal memuat file konfigurasi karena mengandung aturan penulisan ulang URL dan saya belum menginstal modul penulisan ulang URL IIS pada server baru.

Solusi: Instal modul penulisan ulang.
Berharap itu menyelamatkan seseorang beberapa jam.


Ya. Server sebelumnya saya menggunakan ini pada penulisan ulang rute non ssl ke ssl .. begitu banyak untuk pesan kesalahan besar dari IIS. error::) +1 Karena alih-alih membutuhkan SSL, saya menulis ulang URL untuk HTTPS memetikan seseorang yang terhubung tanpa https. Sebuah teka-teki.
Piotr Kula

Terima kasih!!! telah faffing tentang dengan izin selama berjam-jam dan akhirnya pada akhirnya ini!
Carl Woodhouse

Bagaimana cara menginstal modul penulisan ulang URL IIS?
B. Clay Shannon

2
Ini adalah masalah saya juga - terima kasih! Untuk menginstal modul penulisan ulang, unduh dari halaman ini: iis.net/downloads/microsoft/url-rewrite tutup IIS, instal, mulai ulang IIS (hanya untuk aman).
Tyler Forsythe

2
@ B.ClayShannon menggunakan Penginstal Platform Web, cari IIS Rewrite
enorl76

64

Catatan editor: Melakukan apa yang dikatakan jawaban ini adalah BERBAHAYA ! Akun LocalSystem adalah ...

Akun yang sepenuhnya tepercaya, lebih dari akun administrator. Tidak ada pada satu kotak yang tidak dapat dilakukan akun ini, dan memiliki hak untuk mengakses jaringan sebagai mesin (ini membutuhkan Direktori Aktif dan memberikan izin akun mesin untuk sesuatu)


Mengubah Identity dari ApplicationPoolIdentity ke LocalSystem melakukan pekerjaan;).

Saya menggunakan win7 64 dengan IIS 7.5

lebih lanjut tentang Application Pool Identity di IIS 7.5 dan win 7

masukkan deskripsi gambar di sini


Jawaban yang berguna untuk IIS 6 juga. Temukan informasi lebih lanjut tentang cara mengubah Application Pool Identity di situs web Microsoft di sini: microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/…
Manuel Alvarez

22
Membuat perubahan ini adalah risiko keamanan karena akses yang Anda berikan pada layanan ini: msdn.microsoft.com/en-us/library/windows/desktop/…
WhiteKnight

Ini tampaknya menjadi masalah saya di sini dan mengubah App Pool Identity ke LocalSystem berfungsi seperti yang dijelaskan!
Vasily Hall

21
Turunkan suara ini karena lubang keamanan yang menganga ini berada di server. Anda TIDAK PERNAH menjalankan layanan yang menghadap publik seperti IIS di bawah akun sistem lokal !!!! Anda pada dasarnya menyerahkan kunci ke kerajaan untuk siapa saja yang dapat meretas server. Serius JANGAN MELAKUKAN INI.
Dimesio

5
OMG Jawaban ini SANGAT TIDAK SESUAI untuk keamanan. Intervensi moderasi diperlukan. Ini adalah ide yang MENGERIKAN. Bayangkan setiap akses file yang ditentukan pada querystring ... boom ... siapa pun dapat MEMBACA web.config dan IIS akan dengan senang hati menyajikannya kepada dunia. JANGAN GUNAKAN JAWABAN INI.
enorl76

47

Saya memiliki masalah yang sama ketika saya mencoba untuk berbagi folder root situs dengan pengguna lain. Beberapa folder kehilangan izin. Jadi saya mengikuti langkah-langkah untuk menambahkan izin ke grup IIS_IUSRS seperti yang disarankan oleh Afshin Gh. Masalahnya adalah grup ini tidak tersedia untuk saya. Saya menggunakan windows 7.

Apa yang saya lakukan saya baru saja mengubah beberapa langkah:

  1. Klik kanan pada folder induk (yang kehilangan izin),
  2. Properti => Keamanan => Dalam "Grup atau nama pengguna:",
  3. Klik Edit ...
  4. Jendela "Izin untuk folder Anda" akan dibuka.
  5. Di "Grup atau nama pengguna:" tekan ADD ... btn,
  6. Ketik Authen dan tekan Periksa Nama,
  7. Anda akan melihat nama grup lengkap " Pengguna yang Diotentikasi "
  8. Tekan ok => terapkan.
  9. Ini harus mengaktifkan hak istimewa lagi.

Itu berhasil bagi saya.


2
Ini berhasil untuk saya. Ini harus menjadi jawaban yang diterima. Saya mencoba metode lain, mereka tidak berhasil.
GunWanderer

1
Mencoba semua solusi lain tidak akan berfungsi sampai ini.
jenna_3108

1
Oke, saya pikir saya punya penjelasan mengapa ini berhasil. Beberapa dev meng-host kode mereka di C:\ ie C:\Devatau C:\Code, dll. Grup keamanan Authenticated Usersdiberikan pada C:\ dan disebarkan ke folder anak. Namun, pada C:\Usersfolder, propagasi ini berhenti. Jadi pengembang seperti saya yang meng-host kode mereka di dalam folder home harus memberikan akses ke Authenticated Usersfolder root IIS agar IIS dapat berfungsi.
Colin

ketika saya mengklik centang Nama, ia meminta saya kredensial. Saya tidak yakin kredensial pengguna mana yang diharapkan di sini. Apakah ada yang bisa membantu?
RSB

18

Anda tidak perlu mengubah apa pun di web.config Anda.

Masalahnya adalah izin sistem file. Izin file Anda tidak memungkinkan pengguna IIS_IUSRS untuk mengakses web.config (atau mungkin salah satu file). Ubah izin file mereka di windows untuk memungkinkan akun IIS_IUSRS mengaksesnya.


1
Saya punya masalah serupa. Jika ada orang yang tidak dapat menemukan pengguna IIS_IUSRS, periksa lokasi. Milik saya default ke domain perusahaan, jadi saya tidak segera menemukannya karena saya lupa memeriksa untuk melihat di mana itu terlihat.
jgreep

@Mystere Man Saya punya masalah yang sama. Saya mengubah izin dan kemudian mencoba. Masih saya mendapatkan kesalahan yang sama. :(
Rauf

"(atau mungkin salah satu file)" berfungsi untuk saya, memungkinkan akses akun IIS_IUSRS ke web.config tidak cukup, saya perlu mengaktifkannya agar akses ke semua file di situs membantu.
Tuyen Nguyen

2
Saya harus melakukan ini untuk IUSR. IIS_IUSRS tidak bekerja untuk saya.
Todd

Terima kasih. Saya telah memberikan 'Semua Orang' dengan izin penuh pada folder aplikasi Web dan berfungsi.
Minh Nguyen

16

Jadikan file dapat diakses oleh grup IIS_IUSRS . Klik kanan web.config Anda, perluas properti, dan di bawah tab keamanan, tambahkan IIS_IUSRS. Berikan akses baca / tulis pada kelompok.

Ketika grup TIDAK tersedia, ganti IIS_IUSRS dengan ComputerName \ IIS_IUSRS


+1 Tip bagus. Jawaban yang diterima baik, tetapi lupa menyebutkan bahwa Anda mungkin perlu menambahkan nama komputer Anda di depan 'IIS_IUSRS', yang membuat saya melewati ini.
Ralph Lavelle

Ini ("Ketika grup TIDAK tersedia") memiliki harapan saya, tetapi bahkan ketika saya menambahkan nama komputer ("IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS") saya masih mendapatkan kesalahan yang sama. Saya mencoba nama komputer lengkap, tetapi bahkan tidak mau menerimanya sebagai pengguna yang valid.
B. Clay Shannon

15

Buka folder induk, klik kanan dan pilih Properties . Pilih tab Keamanan , edit izin dan Tambah . Klik Tingkat Lanjut dan Temukan Sekarang . Pilih IIS_IUSRS dan klik OK dan OK lagi. Pastikan Anda telah memeriksa Tulis . Klik OK dan OK lagi.

Pekerjaan selesai!


19
Ada apa dengan merekomendasikan Menulis akses ketika Baca adalah semua yang diperlukan? / downvoted
TristanK

2
Satu-satunya IIS * yang saya miliki adalah IIS_WPG
B. Clay Shannon

1
@ B.ClayShannon Me juga. Saya hanya punya IIS_WPG
Fortune

13

Ketika Anda memberikan izin kepada IIS_IUSRS Anda harus memeriksa bahwa di bagian IIS / Otentikasi Aplikasi Web Anda, Kredensial Otentikasi Anonim menggunakan Identitas Pool Aplikasi dan bukan IUSR.

masukkan deskripsi gambar di sini


Di mana saya bisa mendapatkan antarmuka ini?

Pada tab Fitur Lihat di Aplikasi Web Anda: Otentikasi
Carlos

Jawaban ini harus menjadi bagian dari penyebab jawaban yang diterima tanpa ini, Anda juga perlu menambahkan IUSR dalam daftar akses folder situs web
Laurent S.

7

Untuk beberapa alasan, web.config Anda ditetapkan sebagai hanya baca. Hapus centang opsi readonly file web.config.


Jika izin Anda adalah akses penuh dan masih mendapatkan kesalahan, ini adalah jawaban yang benar (y).
Vasil Valchev


4

Saya menggunakan subt untuk membuat pemetaan dari D: ke C: untuk menjaga pengaturan yang sama dengan pengembang lain dalam tim. Ini juga memberi saya kesalahan yang sama seperti yang dijelaskan. Menghapus ini memperbaikinya bagi saya.


3

Solusi yang diterima bukan untuk saya. Saya menggunakan repo Git dan diklon ke folder berikut

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

Saya membuat situs web IIS baru dan mengarahkannya ke jalur. Yang tidak memiliki izin iis_iusrs disarankan dalam solusi yang diterima. Ketika saya menambahkan izin itu masih tidak berfungsi.

Itu hanya mulai berfungsi ketika saya memberikan izin berikut ke grup 'Pengguna' dan pewarisan mengalirkan izin ke web.config. Mungkin seharusnya menerapkannya hanya ke web.config untuk mengurangi area permukaan serangan.

Pemindahan Pengguna


Memiliki situasi yang sama persis. Ini membantu.
Roemer

2

Kami memiliki situs web yang berjalan dengan identitas tertentu di apppool, hanya setelah memberikan pengguna itu akses baca ke folder yang berisi web.config akan berfungsi. Kami melacak ini setelah menambahkan pengguna 'semua orang' dengan baca dan semuanya bekerja dengan baik.



2

Mengubah Identitas Model Proses ke LocalSystem memperbaiki masalah ini untuk saya. Anda dapat menemukan pengaturan ini jika Anda mengklik kanan pada kumpulan aplikasi dan memilih "Pengaturan Lanjut". Saya menjalankan IIS 7.5.


2

Klik kanan Web.Config => Tab Security => Tombol Edit => Tombol Tambah => Tombol Lanjut => Tombol Temukan Sekarang => Dalam hasil Pencarian pilih grup Anda (dalam kasus kami "IIS_IUSRS") => Ok => Ok => Baik


2

Ini terjadi pada kami ketika aplikasi IIS memiliki Direktori Virtual dengan Path Fisik yang berisi garis miring /bukan garis miring terbalik\ . Ini secara tidak sengaja dilakukan menggunakan API manajemen PowerShell untuk IIS selama proses pengiriman berkelanjutan kami.

Contoh Konfigurasi Buruk - applicationHost.config

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

Pastikan physicalPathatribut tidak mengandung garis miring ke depan/ , hanya garis miring terbalik\

Contoh Konfigurasi Terkoreksi - applicationHost.config

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

1
Dalam kasus saya jalur fisik memiliki garis miring ganda misalnya C:\inetpub\MySite\\MyService. Mengubahnya menjadi satu back slash berhasil
Ben Anderson

2

Saya telah memecahkan ini dengan menambahkan izin baca ke folder untuk pengguna kumpulan aplikasi (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

Sedikit latar belakang: Server kami telah diretas menggunakan kesalahan klasik di mana pengguna aplikasi memiliki lebih banyak izin yang seharusnya (admin lokal).

Untuk memperbaikinya kami membuat pengguna domain baru yang hanya memiliki izin pada folder aplikasi, dengan hak minimal yang diperlukan dan menetapkannya sebagai pengguna kumpulan aplikasi. daripada kita mengenai masalah ini dan ini adalah solusi untuk masalah kita.


2

Pindahkan proyek Anda ke beberapa drive selain C: Bekerja untuk saya dengan kesalahan yang sama.


2

Ini bisa terjadi jika aplikasi Anda berada di direktori virtual dan jalur ke file adalah drive yang dipetakan.

Jika Anda mengubah path ke file ke drive lokal, ini akan menyelesaikannya, jika memang itu masalah Anda.


2

Semua jawaban yang diberikan valid dan berfungsi dalam situasi yang berbeda.

Bagi saya, memulai ulang Visual Studio berfungsi.


1

Saya menerima "Tidak dapat membaca file konfigurasi karena izin yang tidak memadai" juga. Ternyata Pembatasan ISAPI dan CGI di IIS untuk ASP.NET 4.0 32bit dan 64bit ditetapkan untuk ditolak. Menandai keduanya untuk Diizinkan perbaiki masalah saya.


1

Jawaban di atas sangat membantu, tetapi dalam kasus ini membantu siapa pun - Saya punya masalah yang tepat ini, dan ternyata saya (windows networking) berbagi folder root tempat situs itu di-host. Kami membunuh bagian itu, dan menambahkan izin Pengguna untuk membaca / mengeksekusi dan itu berfungsi dengan baik.

Saya menduga bagian itu mengacaukannya.


0

Punya masalah ini dengan Aplikasi Virtual. Semua izin ditetapkan. IIS_IUSRS, AppPoolIdentity dan kemudian memberikan akses penuh ke Semua Orang. Tidak ada yang berhasil. Apppool, situs, dan IIS yang telah dimulai kembali tetapi Tidak pergi.

Menghapus aplikasi virtual dan menambahkannya lagi dari awal dan mulai berfungsi.

Seandainya aku tahu apa yang menyelesaikannya.


0

periksa apakah file tidak ditandai sebagai hanya-baca , terlepas dari izin IIS_IUSRS itu akan menampilkan pesan yang sama.


0

Saya memiliki pesan kesalahan ini yang ternyata disebabkan oleh folder fisik saya yang berada di drive jaringan yang bertentangan dengan drive lokal. Tampaknya izin pada drive tersebut secara default dapat berbeda. Misalnya, sementara lokasi drive lokal memberi izin kepada pengguna komputer lokal, lokasi jaringan tidak.

Selanjutnya, jawaban yang diterima tidak berfungsi untuk kasus seperti itu. Pengguna lokal atau pengguna IIS tidak tersedia untuk menetapkan izin. Solusinya adalah memindahkan folder fisik ke drive lokal.


0

Saya memiliki masalah yang sama dan setelah melakukan semua hal yang ditulis di sini sebagai jawaban, masih direproduksi. Bagian kedua dari masalah ini adalah kenyataan bahwa .NET dimatikan di bawah "Aktifkan atau matikan fitur Windows"


0

Kadang-kadang jika itu adalah server baru Anda perlu mengkonfigurasi atau menginstal fitur ASP.NET pada IIS agar dapat membaca file web.config Anda.

Dalam kasus saya ini adalah alasannya.


0

Dalam kasus saya, saya mencoba meng-host halaman dari drive yang dipetakan (subst). Masalahnya adalah bahwa subst dijalankan di bawah akun saya dan pengguna IIS tidak dapat melihat drive yang sama


0

Saya memberi izin dan menggunakan ICACLS.exe tetapi tidak berhasil. Kemudian saya mengubah jalur fisik dan itu berhasil.

(IIS 8.5 windows 2012 R2)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.