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:
- Tambahkan IIS_IUSRS dengan izin Baca pada file di folder
- Ubah metode otentikasi IIS ke BasicAuthentication
- 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
asp.net
iis-7
file-permissions
Freesnöw
sumber
sumber
Jawaban:
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.
sumber
IIS_IUSRS
dan untuk memastikan bahwa ketika Anda mencoba untuk menemukan pengguna ini memeriksa lokasi itu harus diatur ke komputer lokal dan bukan domain perusahaan.Saya memiliki apa yang tampaknya menjadi masalah izin yang sama pada
web.config
file.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.
sumber
error:
:) +1 Karena alih-alih membutuhkan SSL, saya menulis ulang URL untuk HTTPS memetikan seseorang yang terhubung tanpa https. Sebuah teka-teki.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
sumber
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:
Itu berhasil bagi saya.
sumber
C:\
ieC:\Dev
atauC:\Code
, dll. Grup keamananAuthenticated Users
diberikan padaC:\
dan disebarkan ke folder anak. Namun, padaC:\Users
folder, propagasi ini berhenti. Jadi pengembang seperti saya yang meng-host kode mereka di dalam folder home harus memberikan akses keAuthenticated Users
folder root IIS agar IIS dapat berfungsi.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.
sumber
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
sumber
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!
sumber
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.
sumber
Untuk beberapa alasan, web.config Anda ditetapkan sebagai hanya baca. Hapus centang opsi readonly file web.config.
sumber
Saya perlu menambahkan izin ke IUSR (selain ISS-IUSRS, seperti yang disarankan orang lain). (Lihat juga: http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized )
sumber
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.
sumber
Solusi yang diterima bukan untuk saya. Saya menggunakan repo Git dan diklon ke folder berikut
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.
sumber
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.
sumber
Bagi saya kesalahan muncul selama Debugging pada mesin lokal saya dan ternyata terkait dengan basis web.config, yang diprakarsai oleh .NET Framework saat menyusun situs web. C saya: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ File config \ web.config memiliki elemen yang tidak dikenal (folderLevelBuildProviders). Memperbaiki ini memperbaiki kesalahan 500.19.
Lihat ini: IIS Manager tidak dapat mengonfigurasi .NET Compilation pada .NET 4 Applications
sumber
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.
sumber
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
sumber
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
Pastikan
physicalPath
atribut tidak mengandung garis miring ke depan/ , hanya garis miring terbalik\Contoh Konfigurasi Terkoreksi -
applicationHost.config
sumber
C:\inetpub\MySite\\MyService
. Mengubahnya menjadi satu back slash berhasilSaya 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.
sumber
Pindahkan proyek Anda ke beberapa drive selain C: Bekerja untuk saya dengan kesalahan yang sama.
sumber
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.
sumber
Semua jawaban yang diberikan valid dan berfungsi dalam situasi yang berbeda.
Bagi saya, memulai ulang Visual Studio berfungsi.
sumber
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.
sumber
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.
sumber
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.
sumber
periksa apakah file tidak ditandai sebagai hanya-baca , terlepas dari izin IIS_IUSRS itu akan menampilkan pesan yang sama.
sumber
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.
sumber
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"
sumber
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.
sumber
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
sumber
Saya memberi izin dan menggunakan ICACLS.exe tetapi tidak berhasil. Kemudian saya mengubah jalur fisik dan itu berhasil.
(IIS 8.5 windows 2012 R2)
sumber