"401 Unauthorized" pada direktori

87

Saya berasumsi ini adalah kesalahan IIS, karena ini tidak terjadi jika saya menjalankan proyek di komputer lokal saya.

Saya memiliki stylesheet saya di ~/Content/css

File apa pun di direktori itu tidak akan dimuat di halaman, dan ketika saya menavigasi ke mereka secara langsung, saya mendapatkan kesalahan server:

401 - Tidak Sah: Akses ditolak karena kredensial tidak valid.

Anda tidak memiliki izin untuk melihat direktori atau halaman ini menggunakan kredensial yang Anda berikan.

Ini hanya terjadi dengan direktori itu, saya tidak punya masalah mengakses file lain. Apakah ada sesuatu yang perlu saya lakukan di IIS7 untuk menghentikan ini?

Steven
sumber

Jawaban:

47

Sepertinya Anda tidak memiliki izin nama komputer IUSR_ di folder itu. Saya baru saja melakukan pemindaian cepat dan sepertinya Anda akan menemukan informasi yang Anda perlukan di sini .

Jika bukan itu masalahnya, apakah Anda diminta memasukkan nama pengguna dan kata sandi oleh browser? Jika demikian, mungkin IIS dikonfigurasi untuk menggunakan otentikasi terintegrasi saja, seperti yang dijelaskan di sini .

m.edmondson
sumber
4
Jika Anda menggunakan pool aplikasi untuk mengelola akses sistem db / file, jangan lakukan ini. Baca terus untuk melihat jawaban imanabidi di bawah ini.
Ryan Shillington
terima kasih, dalam kasus saya, saya baru saja menambahkan semua orang dengan kendali penuh
MorenajeRD
8
support.microsoft.com/kb/313075 - Halaman ini tidak ada lagi. @ m.edmondson
Divya
296
  1. Buka IIS dan pilih situs yang menyebabkan 401
  2. Pilih properti otentikasi di IIS Header
  3. Pilih Anonymous Authentication
  4. Klik kanan padanya, pilih Edit dan pilih Identitas pool aplikasi
  5. Mulai ulang situs dan seharusnya berfungsi
jasenkoh
sumber
13
Berhasil tetapi mengapa? Bisakah Anda menjelaskan lebih banyak?
nthapa
2
Ini tampaknya berfungsi karena, secara default, "pengguna tertentu" untuk otentikasi anonim adalah IUSR, seperti yang disebutkan dalam jawaban yang diterima. Namun, identitas yang ditetapkan pada kumpulan aplikasi harus memiliki izin ke seluruh situs web, atau situs tidak dapat dimuat. Jadi sementara akun IUSR saya tidak memiliki akses (pada kenyataannya, tampaknya tidak ada), akun yang digunakan pool aplikasi memiliki akses.
Johann
6
Ini berfungsi, tetapi yang membingungkan adalah dulu berfungsi dengan baik selama sekitar 2 tahun dan kemudian hari ini tanpa alasan yang diketahui berhenti bekerja ... solusi Anda berhasil memperbaikinya.
Serj Sagan
Menghabiskan berjam-jam untuk masalah ini dan tidak berhasil sampai saya menemukan ini! Saya memiliki aplikasi Web MVC 5 yang pernah dipublikasikan dalam mode rilis, lalu memuat situs di chrome, kontennya akan dimuat tetapi gayanya tidak. Tautan ada di sana dan jalur di mana benar namun semuanya kosong! Perbaikan ini memecahkan masalah saya.
GIVE-ME-CHICKEN
dalam kasus saya, saya hanya perlu mengaktifkan otentikasi Anonim karena dinonaktifkan secara default saat aplikasi dibuat
Paul
16
  • Buka IIS
  • pilih situs tempat Anda menghadapi masalah

  • Pilih Di Bawah

masukkan deskripsi gambar di sini

- Klik kanan pada Anonymous Authentication dan klik edit dan ikuti di bawah ini

masukkan deskripsi gambar di sini

Siddhartha
sumber
6

Anda tidak memiliki izin untuk melihat direktori atau halaman ini menggunakan kredensial yang Anda berikan.

Ini terjadi meskipun pengguna sudah diautentikasi melalui Active Directory.

Ada banyak penyebab kesalahan Access Denied, tetapi jika Anda merasa telah mengkonfigurasi semuanya dengan benar dari aplikasi web Anda, mungkin ada sedikit detail yang terlupakan. Pastikan Anda memberikan izin yang tepat kepada Pengguna yang Diautentikasi untuk mengakses direktori aplikasi web Anda.

Berikut langkah-langkah yang saya ambil untuk mengatasi masalah ini.

  1. Klik kanan pada direktori tempat aplikasi web disimpan dan pilih Properties dan klik tab Security.

  2. Klik Klik Edit…, lalu tombol Add…. Ketik Pengguna yang Diotentikasi di Masukkan nama objek yang akan dipilih., Lalu Tambahkan tombol. Ketik Pengguna yang Diotentikasi di Masukkan nama objek untuk dipilih.

  3. Klik OK dan Anda akan melihat Pengguna yang Diotentikasi sebagai salah satu nama pengguna. Berikan izin yang tepat pada kotak Izin untuk Pengguna yang Diautentikasi di ujung bawah jika mereka belum dicentang.

  4. Klik OK dua kali untuk menutup kotak dialog. Ini akan segera berlaku, tetapi jika Anda ingin memastikan, Anda dapat memulai ulang IIS untuk aplikasi web Anda.

Segarkan browser Anda dan itu akan menampilkan halaman web sekarang.

Semoga ini membantu!

Kent Aguilar
sumber
3

Anda perlu memeriksa izin folder di server Anda dan memeriksa apakah akun yang Anda gunakan untuk menjalankan aplikasi Anda memiliki akses ke folder itu.

Gaz Winter
sumber
0

Bagi saya, akses Pengguna Anonim baik-baik saja di tingkat server, tetapi bervariasi hanya pada satu folder "virtual" saya.

Membuat saya sedikit bingung dan kemudian beberapa bantuan dari seorang kolega untuk mengetahui bahwa IIS memiliki pengaturan "otentikasi" pada tingkat folder virtual juga - mudah-mudahan ini membantu orang lain dengan kesulitan saya.

pengguna6096790
sumber
0

Dalam kasus kami, itu adalah otentikasi terintegrasi Windows yang ditentukan dalam aplikasi web.config

TAPI modul windows-auth tidak diinstal sama sekali pada mesin IIS.

Hanya menambahkan kemungkinan alasan lain.

Alex
sumber
-4

Perbaikan sederhana lainnya yang saya temukan adalah menghapus situs IIS lokal (dari dalam IIS Manager) dan kemudian membuat ulang direktori virtual dari "Properti" proyek web Anda di Visual Studio.

KWondra
sumber