Bagaimana cara mendiagnosis 500 Server Internal Kesalahan pada IIS 7.5 ketika tidak ada yang ditulis ke log peristiwa?

43

Saya baru saja menggunakan pembaruan untuk situs ASP.NET MVC3 yang sudah ada (sudah dikonfigurasi) dan saya mendapatkan layar biru IIS yang menyatakan kematian

Kesalahan HTTP 500.0 - Kesalahan Server Internal
Halaman tidak dapat ditampilkan karena kesalahan server internal telah terjadi.

Namun; tidak ada yang muncul di Application Event Log di mana saya berharap melihat (lebih banyak) deskripsi entri.

Bagaimana saya bisa mendiagnosis masalah ini?

Greg B
sumber
Saya memiliki masalah yang sama persis di sini. Dalam pengalaman saya, jika log peristiwa kosong dari permintaan tidak dialihkan dengan benar ke proses pekerja. Di salah satu penerapan baru-baru ini kami melihat aplikasi berfungsi sebentar-sebentar dengan sekitar 50% dari permintaan gagal secara acak dengan 500 kesalahan dan tidak ada apa-apa di log. Saya menduga ada sesuatu yang salah dengan AppDomain membongkar yang terjadi setelah penyebaran. Karena penasaran, apakah Anda menjalankan antivirus di lingkungan produksi Anda? Apakah IIS reset menyelesaikan masalah (sampai penyebaran berikutnya)?
ShadowChaser

Jawaban:

41

Lihatlah fitur Pelacakan Permintaan Gagal IIS7:

Pemecahan Masalah Permintaan yang Gagal Menggunakan Pelacakan di IIS 7
Pemecahan masalah dengan Pelacakan Permintaan Gagal

Hal lain yang akan saya lakukan adalah mengubah <httpErrors>pengaturan Anda karena IIS mungkin menelan pesan kesalahan dari lanjut pipa:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

Jika situs ditulis dalam ASP Klasik maka pastikan untuk mengaktifkan pengaturan Kirim Kesalahan ke Browser di fitur konfigurasi ASP:

masukkan deskripsi gambar di sini

Dan akhirnya, jika Anda menggunakan Internet Explorer maka pastikan Anda telah mematikan Tampilkan pesan kesalahan HTTP ramah di pengaturan Lanjut (meskipun saya menduga Anda sudah melakukannya atau menggunakan browser yang berbeda).

Kev
sumber
2
existingResponse diatur ke Ganti. Terima kasih atas tipnya.
Greg B
Ini adalah jawaban yang sangat bagus tetapi bisa diperbaiki jika menyertakan cara memulai jendela konfigurasi ASP.
Michael Potter
13

Dalam hal ini:

  • Log Peristiwa kosong.
  • web.config tidak rusak - diverifikasi dengan menggunakan yang sama pada mesin lokal / menggunakan inetmgr

Akhirnya...

  • Memeriksa log IIS menunjukkan permintaan seperti ini

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

Kuncinya adalah:

sc-status sc-substatus sc-win32-status 500 19 5

yang dengan beberapa googling menunjuk saya ke IIS_USRStidak memiliki izin baca ke wwwfolder

perintah
sumber
2
Saya menemukan daftar kode status di sini: support.microsoft.com/en-us/help/943891/…
sirdank
4

Masalah yang paling jelas adalah hak NTFS yang tidak benar atau nol pada folder aplikasi web. Jadi pastikan akun yang melayani situs memiliki izin yang tepat. Tanpa hak NTFS yang tepat ke direktori web, apa pun yang Anda masukkan ke web.config tidak akan pernah terbaca.

Pemeriksaan cepat dapat memberikan hak penuh kepada semua orang - jika situs mulai berfungsi maka Anda tahu itu masalah hak dan Anda kemudian dapat menetapkan tentang menetapkan hak yang sesuai ke akun yang lebih tepat.

rism
sumber
1

Jika memutakhirkan dari IIS6, maka itu mungkin salah satu web.config berfungsi pada 6, tetapi tidak di IIS 7.5 ... Klik dua kali pada semua ikon di IIS untuk situs web dan Anda mungkin mendapatkan kesalahan tentang format (Bagian harus di bawah bagian lain ...)

M Hall
sumber
0

Saya memiliki masalah yang sama dengan Aplikasi Web Azure. Saat debugging secara lokal, pesan kesalahan (JSON) yang dikembalikan dari panggilan ajax sepenuhnya dikembalikan ke browser. Tapi begitu disebarkan ke Aplikasi Web, pesan-pesan itu ditelan dan saya dikembalikan pesan kesalahan 500 default. Jadi saya harus secara eksplisit mengatur existingResponsenilainya ke PassThroughdalam httpErrorstag web.config .

Loul G.
sumber