Saya memiliki aplikasi web yang digunakan untuk kotak Server 2008 IIS 7.5.
Dari jarak jauh memberikan kesalahan ini: 401 - Unauthorized: Access is denied due to invalid credentials
. (jarak jauh = desktop pada LAN yang sama)
Telah mencoba beberapa klien jarak jauh menggunakan browser yang berbeda, semua hasilnya sama. (IE, FF, dan Chrome)
Memukul aplikasi dari desktop server itu sendiri berfungsi dengan sempurna . Namun saya belum mencoba Firebug di desktop server. Saya akan menganggap itu masih mengeluarkan kode status 401 namun tetap mengembalikan konten. Lihat Pembaruan # 2.
Aplikasi ini menggunakan Otentikasi Anonim.
Aplikasi ini ditulis dalam .NET 4.0 Asp.Net menggunakan kerangka kerja MVC.
Konten statis berfungsi dengan baik, contoh: http://server.com/content/image.jpg
Sysinternals procmon
mengembalikan 2 hasil ini untuk setiap permintaan: FAST IO DISALLOWED dan PATH NOT FOUND.
Saya memiliki 2 aplikasi MVC lainnya berjalan dengan baik di server yang sama. Saya telah memeriksa keamanan pada folder dan semuanya cocok.
Aplikasi berjalan dengan baik pada kotak Server 2008 IIS 7.0.
Tidak ada yang muncul di log peristiwa di server terkait dengan ini.
Menarik rambut saya ke sini, ada kiat pemecahan masalah?
UPDATE # 1 : Ini hanya mendapatkan lebih banyak WTF saat saya menggali.
Jika saya mengklik Aplikasi di IIS Manager -> Halaman Kesalahan -> pilih Edit Pengaturan Fitur Detailed Errors
, aplikasi bekerja dari jarak jauh. Tidak meninggalkan ini, jadi masalah belum terpecahkan, itu hanya lebih membingungkan.
UPDATE # 2 : Menggunakan Firebug, saya melihat bahwa Statusnya masih 401 Unauthorized
, tetapi Responsnya mengembalikan HTML aplikasi yang benar.
PEMBARUAN # 3 Bermain-main dengan Pelacakan Permintaan Gagal, berikut adalah Jejak Permintaan PERINGATAN yang menyebabkan 401:
ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401
HttpReason Unauthorized
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode The operation completed successfully. (0x0)
Pembaruan # 4 Log IIS reguler menunjukkan ini:
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414
sumber
Html.RenderAction
, lalu menyadari penggunaan RazorHtml.Action
sehingga pencarian awal saya kosong.Jawaban:
Kadang-kadang Anda harus mengambil langkah mundur ... Penyebabnya adalah saya memiliki pandangan
Html.RenderAction()
saya yang disebut metode tindakan yang ditandai dengan[Authorize]
atribut.sumber
Karena berfungsi secara lokal tetapi tidak jauh, sepertinya saya seperti akun pengguna anonim tidak memiliki akses ke sesuatu, tetapi pengguna windows Anda melakukannya. Untuk membuktikan ini, matikan Windows Authentication untuk situs web dan lihat apakah itu rusak secara lokal.
Apa pun yang melanggar kemungkinan berjalan sebagai identitas situs web Anda alih-alih identitas kumpulan aplikasi Anda, jika tidak maka akan rusak secara lokal dan jarak jauh. Rekomendasi saya jika Anda memiliki 1 hingga 1 pemetaan situs ke kumpulan aplikasi, atau Anda memiliki lingkungan yang sangat tepercaya, adalah mengatur akun pengguna anonim untuk menggunakan identitas kumpulan aplikasi. Maka Anda tidak perlu khawatir tentang mempertahankan pengguna ke-2.
Anda menyebutkan proses explorer. Itu bagus untuk menemukan info yang berjalan, tetapi alat yang kemungkinan akan mengungkap kesalahan akses ditolak adalah processmon (juga dari sysinternals). Cobalah, ulangi dan tangkap, lalu cari kata 'ditolak'. Seharusnya muncul masalah akses yang ditolak pada disk.
sumber
Anda akan memiliki perilaku yang sama ketika Anda memiliki filter untuk otorisasi khusus yang mewarisi dari
AuthorizeAttribute
dan satu atau lebih panggilan keOnAuthorization
metode, dengan salah satu dari mereka mengaturAuthorizationContext.Result
ke `HttpUnauthorizedResult 'sumber
Untuk beberapa alasan ini memperbaiki masalah saya.
sumber
Apakah Anda memeriksa pengaturan di bawah aturan Otorisasi? Jika ada yang dapat mengakses halaman ini (yang tampaknya menjadi tujuan Anda), pastikan Anda memiliki aturan "Izinkan" yang memiliki "Semua Pengguna" di bawah kolom pengguna.
Kemudian di "Otentikasi" pastikan tidak ada konflik dan hanya Otentikasi Anonim yang diaktifkan.
Semoga itu bisa membantu.
sumber