Halaman yang diminta tidak dapat diakses karena data konfigurasi terkait untuk halaman tersebut adalah kesalahan yang tidak valid


480

Saya ingin mengunggah situs web asp.net saya sendiri di IIS dengan IIS Manager. Tetapi ketika saya melakukan ini, saya mendapatkan kesalahan berikut

Kesalahan HTTP 500.19 - Kesalahan Server Internal Halaman yang diminta tidak dapat diakses karena data konfigurasi terkait untuk halaman tidak valid

Modul IIS Web Core
Notification
Handler Tidak Dikenal Belum ditentukan
Kode 0x80070005
Kesalahan Konfigurasi Kesalahan Tidak dapat membaca file konfigurasi karena izin yang tidak memadai
File Konfigurasi \\?\C:\Users\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

Saya berkali-kali mencari solusi untuk kesalahan ini, tetapi tidak ada solusi yang memecahkan kesalahan.

Saya punya masalah dengan IUSRakun saya . Saya tidak dapat melihat akun ini di "grup atau nama pengguna" di properti web.config.

Apa masalahnya?


3
Saya mengalami masalah ini setelah mengembalikan beberapa perubahan melalui Subversion (walaupun itu bisa saja kebetulan). Saya perhatikan bahwa Web.configACL file berbeda dengan file lain di direktori dan itu tidak mewarisi dari orang tuanya . Saya mengaktifkan warisan ACL dan semuanya kembali normal.
ta.speot.is

1
Solusi saya sedikit berbeda. Pada beberapa mesin Windows Server 2008, Anda harus memberikan akses ke grup "IIS_IUSRS", bukan pengguna "IUSR" - dalam izin keamanan folder situs. Pastikan untuk pergi ke lokasi mesin Anda.
MacGyver

7
Saya mengalami masalah saat memindahkan situs ke server yang tidak memiliki modul IIS Url Rewrite yang diinstal.
ScottE

1
Ini bisa terjadi JIKA Anda telah mengganti nama server Anda. Saya melakukan ini untuk diri saya sendiri - dan akhirnya harus masuk (Windows Server 2012 R2) dan menambahkan kembali IIS APPPOOL \ SiteName ... dan 100% memperbaikinya.
Michael K. Campbell

2
jika Anda baru menggunakan aplikasi ASP.NET Core di server 2008 R2 Anda yang lebih lama, Anda harus menginstal bundel .NET Core Windows Server Hosting - seperti yang saya pelajari pada jawaban ini
bkwdesign

Jawaban:


178

Pesan tersebut mengatakan bahwa file konfigurasi Anda rusak dalam beberapa cara. Namun ia juga mengatakan bahwa itu sebenarnya tidak dapat mengakses file konfigurasi. Jadi saya akan mengabaikan pesan asli tentang korupsi / kurangnya validitas karena ini kemungkinan besar hanya efek tidak dapat membaca file karena kurangnya otorisasi.

Alasannya tidak dapat membaca file konfigurasi adalah karena proses menjalankan aplikasi web Anda tidak memiliki izin untuk mengakses file / direktori. Jadi, Anda perlu memberikan proses yang menjalankan izin aplikasi web aplikasi Anda.

Hak akses harus cukup mudah, yaitu setidaknya Baca , dan, tergantung pada aplikasi Anda, mungkin Tulis .

Di atas, Anda menyebutkan IUSR dll tidak berada di properti untuk web.config. Jika maksud Anda IUSR tidak terdaftar di tab keamanan file maka itu hal yang baik. Seseorang tidak ingin memberikan IUSR segala jenis izin ke web.config . Peran IUSR adalah pengguna internet anonim.

File web.config seharusnya hanya dapat diakses melalui aplikasi Anda.

Masalahnya adalah Anda belum mengatakan versi OS dan IIS yang Anda gunakan sehingga sulit untuk menyarankan langkah mana yang harus diambil.

Yaitu di IIS 7.5, pesan kesalahan yang Anda kutip kemungkinan akan terjadi karena ApplicationPoolIdentity Anda tidak diberi izin. Aplikasi web Anda termasuk dalam kumpulan aplikasi dan oleh karena itu Anda perlu memberikan izin ke akun OS yang menjalankan kumpulan aplikasi aplikasi web Anda. Seringkali ini adalah sesuatu seperti NetworkService tetapi Anda mungkin telah mengubahnya untuk dijalankan di bawah akun yang dibuat khusus. Tanpa info lebih lanjut, sulit untuk membantu Anda.


3
Bisakah saya memberikan izin ini secara terprogram? Tolong bantu. Saya mengalami masalah yang sama.
pcbabu

1
Terima kasih, ini menyelesaikan masalah saya juga. Saya menggunakan peniruan yang tampaknya membuatnya perlu untuk memberikan izin BACA ke direktori aplikasi untuk akun yang ditiru.
Cesar

2
Saya terus mendapatkan "Gagal menyebutkan objek dalam wadah. Akses ditolak." setelah itu saya beri izin
RollRoll

4
Klik kanan pada folder yang Anda butuhkan untuk memberikan izin keamanan. Ini adalah folder root tempat aplikasi Anda dipublikasikan dan folder yang sama dengan jalur fisik situs web IIS Anda. Pilih properti dari menu konteks dan klik pada tab Keamanan. Edit pengguna, lalu tambahkan pengguna. Klik tombol Lokasi dan pilih ikon atas (seperti Komputer Saya). Di area teks, masukkan IIS_IUSRS. Tekan OKs berulang kali hingga semua menu konteks ditutup. Mulai ulang situs web Anda dan navigasi lagi.
Jeremy Ray Brown

Jika Anda tidak ingin mengetahui izin di jalur fisik untuk situs web, maka berikan izin kepada semua orang! Itu adalah peretasan yang cepat dan tidak disarankan untuk semua akses file / folder fisik.
Jeremy Ray Brown

662

Ini juga dapat terjadi jika situs dikonfigurasi untuk menggunakan modul Penulisan Ulang URL IIS tetapi tidak diinstal.


Ini untuk saya .. menghapus bagian penulisan ulang (yang sebenarnya tidak perlu) dan semuanya baik-baik saja.
Andrew Patterson

129
Permainan yang bagus. <rant> Alangkah baiknya jika IIS akan melemparkan kesalahan "Saya tidak mengerti apa itu <rewrite>", daripada mengeluh tentang XML yang cacat. </rant>
Evan Haas

7
Terima kasih banyak - itu masalah saya juga. Modul rewrite sedang digunakan jika Anda melihat tag <rewrite>. Orang akan berpikir IIS bisa memberi tahu Anda apa yang tidak dapat diuraikan.
scolestock

6
Cara mudah yang bagus untuk menyelesaikan ketergantungan yang hilang pada baris perintah; webpicmd / Instal / Produk: UrlRewrite2
cirrus

2
Saya hanya ingin mencatat bahwa jika web.config Anda menyertakan tag <rewrite>, maka Anda memerlukan modul penulisan ulang.
Jono

437

Akhirnya , saya mendapat solusi untuk masalah saya. Akun ASP.net tidak muncul di manajer IIS, karena saya tidak mencentang kotak centangnya di IIS. Untuk melakukan ini di Windows 7 ikuti langkah-langkah:

  1. Buka panel kontrol
  2. Klik tautan "program" (bukan bongkar program)
  3. Klik tautan "nyalakan / matikan fitur windows"
  4. Temukan "Layanan Informasi Internet IIS" di jendela sembulan dan perluas simpulnya
  5. Perluas simpul "World Wide Web Service"
  6. Perluas simpul "Fitur Pengembangan Aplikasi"
  7. Centang kotak "ASP.NET"
  8. Kemudian klik tombol ok

Sekarang, Anda akan melihat akun ASP.net pada manajer IIS dan secara default Anda akan melihat akun IIS. Sekarang, Anda harus memindahkan situs web ASP.net Anda dari "dokumen saya" ke tempat lain di mana IIS memiliki izin untuk mengaksesnya (yaitu ke partisi lain di komputer Anda). Sekarang, jelajahi situs web Anda dari manajer IIS dan itu akan berfungsi.

Terima kasih banyak untuk Jeff Turner untuk solusinya.


Seseorang pasti telah menghapus layanan peran ini dari server yang telah berjalan selama berbulan-bulan. Saya tidak akan pernah menduga untuk mengecek itu. Ugh.
SixOThree

Lebih mudah lagi, menggunakan baris perintah:dism /NoRestart /Online /Enable-Feature /FeatureName:IIS-ASPNET
i3arnon

1
Terima kasih ... bagaimana mereka bisa merilis produk dengan tingkat pesan kesalahan yang begitu rendah?
Vland

Bagian <handlers> saya memiliki referensi ke WebDAV dan setelah saya menambahkan fitur WebDAV ke IIS itu berfungsi.
Andy Roberts


47

Saya mengalami masalah yang sama, inilah solusi yang bekerja untuk saya.

  1. Manajer IIS
  2. Klik kanan pada situs web itu
  3. Edit Izin
  4. Menambahkan pengguna 'IIS_IUSRS' dari tab Keamanan
  5. Memberi izin penuh kepada Pengguna 'IIS_IUSRS'
  6. Tetapkan Identitas Pool Aplikasi ke 'ApplicationPoolIdentity'

2
Saya tidak akan merekomendasikan ini untuk keperluan produksi. Saya percaya IIS_IUSRS adalah akun anonim dan Anda akan memberikan akses penuh ke seluruh struktur direktori situs web
Jacques

Menyelamatkan hari saya juga, karena saya tahu izin adalah pelakunya juga saya menggunakan identitas apppool lain dan berhasil!
Dekat

39

Untuk pengembang Visual Studio (VS): Seperti yang ditunjukkan oleh Harvey Darvey, Savage, dan Snives, Konfigurasi Host Aplikasi Anda mungkin menunjuk ke jalur fisik aplikasi yang salah. Cari virtualDirectory di dalam /.vs/config/applicationhost.config untuk mengubah physicalPath jika itu salah.

masukkan deskripsi gambar di sini

Pastikan physicalPath benar:

masukkan deskripsi gambar di sini


3
Anda juga dapat melakukan hal yang sama persis di project => properties => project url => buat direktori virtual, pilih yes untuk memetakan kembali ke jalur fisik yang benar ketika diminta
Adam Diament

Dalam kasus saya, ini sedikit berbeda tetapi memberikan arahan saya, Terima kasih banyak, itu sangat membantu saya :)
Bharat

24

Peringatan facepalm:

Anda juga akan mendapatkan kesalahan ini jika jalur ke file konfigurasi salah. Periksa ulang untuk memastikan jalur fisik dimasukkan dengan benar di IIS.


Sebagai varian dari ini, ternyata saya menetapkan jalur yang salah ke situs itu sendiri. Saya tidak sengaja pergi melalui jaringan yang dipetakan dan bukannya jalur file sistem lokal.
David

2
Punya momen telapak tangan yang sama. Saya memindahkan situs web saya ke sub-folder, dan berpikir saya telah mengetik dengan benar jalur baru ke IIS. Situs ini tampaknya masih memiliki semua folder yang diperlukan, dll, di bawahnya ditampilkan di pohon di IIS, jadi itu tidak memicu ini sebagai alasannya. Saya mengatur ulang izin dll, tidak menyelesaikannya. Kemudian berbicara melalui masalah itu disarankan kepada saya secara sepintas ... dan saya sekarang memiliki situs kerja lagi setelah 1 jam waktu terbuang!
ladygargar

Di mana jalur ini ditetapkan? Ini tampaknya menjadi masalah saya tetapi saya tidak dapat menemukan apa yang perlu saya ubah
Drew Rochon

Dalam lingkungan pengembangan: .vs> config> applicationhost.config Inilah yang terjadi ketika Anda tidak memiliki GIT yang diabaikan pada file dan pengembang mulai memeriksanya.
Savage

Saya memiliki tebasan "\" ekstra di jalur fisik saya - shesh. Terima kasih untuk ini
J King

18

Anda perlu menetapkan izin untuk IIS_IUSRS di mesin lokal (tetapi Anda tidak harus menetapkan untuk IUSR, pada kenyataannya itu akan bekerja bahkan jika Anda secara eksplisit menolak izin).

Untuk menetapkan izin, cukup klik kanan pada folder dan pada tab keamanan pastikan untuk memberikan izin yang benar, dan jika pengguna tidak terdaftar maka klik "ADD", dan masukkan IIS_IUSRS (dan pastikan bahwa di bawah "domain" lokal komputer dipilih, atau masukkan di bidang nama YourLocalComputerName \ IIS_IUSRS), dan kemudian Anda dapat melanjutkan.

Jika mau, Anda dapat alih-alih menetapkan izin ke grup IIS_IUSRS, Anda bisa menetapkan ke kumpulan aplikasi yang secara umum harus "IIS APPPOOL \ nama kumpulan aplikasi ".


Dari situs web berikut: iis.net/learn/get-started/planning-for-security/… Grup IIS_IUSRS menggantikan grup IIS_WPG. Grup bawaan ini memiliki akses ke semua file dan sumber daya sistem yang diperlukan sehingga akun, ketika ditambahkan ke grup ini, dapat bertindak sebagai identitas kumpulan aplikasi.
Jeremy Ray Brown

Masih mendapat akses ditolak.
GreySage

15

Hanya untuk chip, saya menerima jenis kesalahan yang sama dan masalah saya cukup sederhana: Saya kehilangan .NET Core Hosting Bundle. Setelah saya menginstal alat dan me-restart server, itu baik-baik saja.

Anda dapat menemukan manual untuk menghosting inti asp.net di windows di sini: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2


Cukup menginstal .NET Core SDK tidak cukup untuk menjalankan situs web ASP.NET Core Anda di bawah IIS. Saya menghabiskan beberapa jam untuk mengatasi kesalahan ini ...
Ryan Rodemoyer

Ini mungkin tidak cukup, tetapi itu mengatasi kesalahan ini. Bekerja untukku. Saya berasumsi bahwa semua komponen .NET sudah termasuk.
pcalkins

Ya, harus menginstal "Runtime & Hosting Bundle" di sini: dotnet.microsoft.com/download/dotnet-core/2.2
Kirk Woll

Oke, paket "mandiri" tidak sesuai dengan judulnya.
SLCH000

11

Hal yang sama terjadi dengan saya, Coba periksa ini dengan mengklik dua kali pada string Koneksi di panel kanan IIS 7 ketika Anda memilih situs web.

Ini akan memberi Anda kesalahan (bahwa ada beberapa masalah dengan file konfigurasi web), karena Anda telah menggunakan aturan penulisan ulang URL dan masing-masing komponen tidak diinstal.

Instal "Microsoft URL Rewrite Module 2.0 untuk IIS 7" dan ini akan memperbaiki masalah Anda


9

Tidak ada yang bekerja di sini untuk saya, saya menemukan perintah ini dalam jawaban SO lain dan itu memecahkan masalah saya. Mulai saja prompt perintah sebagai administrator dan jalankan perintah ini:

run->cmd

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

Kredit: Pengguna Vicxx


Untuk memperbaiki lingkungan pengembangan saya vs 2017 saya harus menghapus IIS dari fitur windows 7 saya. Tambahkan kembali, perbarui dan instal semua barang sesuai kebutuhan. Langkah terakhir adalah menjalankan regiis dari dengan visual studio 2017 command prompt. Sekarang semuanya bekerja lagi, 8 jam waktu dihabiskan untuk memperbaiki ini. uck ..
Warren LaFrance

7

Saya melakukan langkah-langkah ini untuk menyelesaikan masalah ini di Windows Server 2012, IIS 8.5. Seharusnya bekerja untuk versi lain juga.

  1. Buka pengelola server, klik tambahkan peran dan fitur
  2. Di bagian peran pilih: Web Server
  3. Di bawah Subbagian Keamanan pilih semuanya (Saya mengecualikan intisari, batasan IP, dan otorisasi URL karena kami tidak menggunakannya)
  4. Di bawah Pengembangan Aplikasi pilih .NET Extensibility 4.5, ASP.NET 4.5dan kedua ISAPIentri
  5. Di bagian fitur pilih: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. Di bagian server web pilih: Web Server(semua), Management Tools(Konsol Manajemen IIS dan Layanan Manajemen), Windows

6

Satu kemungkinan lain yang memperbaiki masalah ini bagi saya:

IIS -> Edit Izin -> Tab Keamanan -> Berikan izin "Pengguna" yang sesuai (atau IIS_IUSRS, tergantung pada pengaturan Anda)


6

Ehm. Saya telah memindahkan situs / file saya ke folder lain. Tanpa mengubah jalur di situs web IIS.

Kalian semua bisa tertawa sekarang.


6

Pastikan Anda memiliki kumpulan aplikasi yang diatur ke versi kerangka kerja yang benar. Anda juga harus memastikan aspnet, IIS_IUSRS Anda, atau pengguna IUSR telah membaca akses ke direktori aplikasi.


Bagaimana saya bisa melakukan ini ?? "pastikan pengguna aspnet atau IUSR Anda telah membaca akses ke direktori aplikasi"
Yasmeen

5
pergi ke C: \ Users \ Yasso \ Documents \ Visual Studio 2008 \ WebSites \ WebSite5 \ dan pastikan direktori WebSite5 telah membaca izin untuk grup IUSR dan IIS_IUSRS. Anda melakukan ini dengan mengklik kanan pada direktori dan memilih properti, lalu pergi ke tab keamanan.
Jeff Turner

Tetapi saya tidak melihat grup IUSR dan IIS_IUSRS di grup atau nama pengguna !! saya tidak tahu apa masalahnya ??
Yasmeen

1
apakah Anda melihat opsi untuk layanan jaringan? secara default itulah yang akan digunakan kumpulan aplikasi ketika Anda bekerja pada desktop Anda (jika saya ingat dengan benar)
Jeff Turner

1
ketika Anda pergi ke tab keamanan, setelah Anda mengklik kanan pada folder dan properti yang dipilih. Klik tombol "Add", yang akan memunculkan jendela lain dengan tombol "Edit". Klik tombol "Edit" dan ketik "Layanan Jaringan" ke dalam kotak teks, itu harus menemukan pengguna dan menambahkannya ke daftar. Kemudian pastikan bahwa pengguna memiliki hak baca setidaknya.
Jeff Turner


4

Ini juga terjadi pada saya ketika saya memiliki dokumen default dengan nama yang sama (seperti index.aspx) yang ditentukan di kedua file web.config saya DAN situs web IIS saya. Saya akhirnya menghapus entri dari situs web IIS dan menyimpan entri web.config seperti di bawah ini:

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

4

Terkadang pesan ini memiliki komponen yang hilang di lingkungan IIS Anda, misalnya kerangka kerja tertentu, atau fitur IIS seperti kompresi dinamis, dan bukan izin untuk web.config.

Jika ini masalahnya, solusinya adalah menginstal dan menggunakan Pemasang Platform Microsoft dan menginstal komponen-komponen yang hilang - Anda mungkin harus mencari tahu apa yang sebenarnya hilang karena log kesalahan dan pesan tidak memberi tahu Anda.


NB: kompresi dinamis ada dalam daftar 'fitur windows' dan bukan MPI
Simon_Weaver

@Simon_Weaver sebenarnya kompresi dinamis ada dalam daftar hal-hal yang MPI akan instal untuk Anda dan sudah sejak 2012, bahkan mungkin sebelum itu. Bersulang.
eagle779

4

Coba pasang sub komponen 'Pengembangan Aplikasi' IIS seperti yang disebutkan dalam SO ini

  • Klik "tombol Mulai" di kotak pencarian, masukkan "Menghidupkan atau mematikan fitur windows"
  • di jendela fitur, Klik: "Layanan Informasi Internet"
  • Klik: "Layanan World Wide Web"
  • Klik: "Fitur Pengembangan Aplikasi"
  • Periksa (aktifkan) fitur-fiturnya. Saya memeriksa semua kecuali CGI.

masukkan deskripsi gambar di sini


3

Anda perlu mengatur izin untuk folder Situs web Anda atau menyalinnya ke folder wwwroot :) - Jika mengatur izin, ada 2 cara: + Klik kanan ke folder Situs Web Anda + Atau klik kanan ke Situs Web Anda di IIS => pilih Edit izin dan Tambahkan izin (IUSR - pengguna iis default) Semoga berhasil ;-)


Dalam kasus saya - iis 8, itu adalah Pengguna yang Diotentikasi.
keturunan

3

Dalam kasus saya, itu disebabkan oleh titik jalur fisik aplikasi ke folder yang tidak ada di IIS.

tangkapan layar pengaturan aplikasi


3

Aku punya masalah seperti yang saya menyalin file web.config saya turun dari prod, mengubah segalanya tidak prod terkait kecuali aturan Rewrite yang menulis ulang ke http S .

Menghapus aturan itu dan menjalankannya dengan baik.


2

Cukup mudah, IIS tidak memiliki akses ke web.config Anda. Saya akan mulai dengan mengambil situs dari folder dokumen Anda. Pastikan juga memiliki izin r / w.


Saya memindahkan situs dari Dokumen ke tempat lain tetapi kesalahan yang sama muncul
Yasmeen

2

Saya juga memiliki masalah serupa dan saya memperbaikinya dengan mengomentari beberapa bagian dalam file web.config.

Proyek ini sebelumnya dibangun dan digunakan dalam .Net 2.0. Setelah bermigrasi ke .Net 3.5, ia mulai melempar pengecualian.

Resolusi:

Jika file konfigurasi Anda berisi "< sectionGroup name =" system.web.extensions > ", beri komentar dan jalankan karena bagian ini sudah tersedia di bawah Machine.config.


2

Anda bisa mendapatkan kesalahan ini jika Anda memiliki kesalahan synax atau masalah di file web.config Anda.

Bagi saya, itu adalah ampersand nyasar di URL yang saya gunakan di AppSettings.


Saya juga mendapatkan ini dengan Kata Sandi dalam Koneksi String yang memiliki & - encoding ke & amp; membuat saya melewati masalah ini. Terima kasih, ini satu-satunya jawaban di sini yang tidak berkaitan dengan Izin.
Jeremy Thompson

2

Pada halaman kesalahan IIS 7.5 Anda mendapatkan klik pada 'Lihat informasi lebih lanjut' di bagian bawah halaman dan dalam hal ini akan membawa Anda ke tautan Microsoft berikut:

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

The 0x80070005 Kode Kesalahan tampaknya terkait dengan izin dan mengikuti langkah-langkah dalam Resolusi 2, Metode 2 yang menetapkan akun yang benar dengan izin pada folder yang relevan harus memperbaikinya - Saya menghabiskan 3 hari mencari solusi sampai saya menemukan solusi, langsung bekerja.


2

punya masalah dengan drive yang dipetakan, IIS tidak berfungsi dengan drive yang dipetakan. Cukup gunakan drive yang belum dipetakan.


2

Jelajahi folder tempat situs web Anda disimpan dan lihat Anda akan mendapatkan satu folder tambahan "aspnet_client" hapus folder itu dan itu akan bekerja untuk Anda.

Saya mencoba ini masalah saya terpecahkan.

Jika itu berhasil untuk Anda, harap jadikan itu sebagai jawaban sehingga beberapa orang lain juga akan mendapatkan solusi.


1

Tidak ada yang berhasil untuk saya, tetapi saya akhirnya punya solusi yang bekerja untuk saya:

hapus baris ini di web.config:

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

jangan hapus baris ini

<compilation debug="true"/>

1

Tambahkan IIS_IUSRS akun lokal ke keamanan, dan akui mereka membaca / mengeksekusi akses. yang bekerja pada kasus saya.

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.