Mode CustomErrors = "Mati"


254

Saya mendapatkan kesalahan setiap kali saya mengunggah aplikasi web saya ke penyedia. Karena mode customErrors, yang saya lihat adalah pesan default "Runtime error", memerintahkan saya untuk mematikan customErrors untuk melihat lebih banyak tentang kesalahan tersebut.

Jengkel, saya telah mengatur web.config saya agar terlihat seperti ini:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Dan tetap saja, yang saya dapatkan hanyalah halaman kesalahan jauh yang bodoh tanpa info berguna tentangnya. Apa lagi yang bisa saya lakukan untuk menonaktifkan customErrors?!


1
coba tambahkan @Model.Exception.MessagekeShared/Error.cshtml
Muflix

Secara umum, perhatikan transformasi konfigurasi (mis. Web.Debug.config yang dapat mengubah nilai itu), dan perhatikan definisi duplikat dari bagian / properti dalam file (jelas bukan masalah dalam kasus ini)
Graham

Jawaban:


165

Ini telah membuat saya gila selama beberapa hari terakhir dan tidak bisa mengatasinya tetapi akhirnya berhasil mengatasinya:

Dalam file machine.config saya, saya memiliki entri di bawah <system.web>:

<deployment retail="true" />

Ini tampaknya menimpa pengaturan customError lainnya yang telah Anda tentukan di file web.config, jadi setel entri di atas ke:

<deployment retail="false" />

sekarang berarti bahwa saya dapat sekali lagi melihat pesan kesalahan terperinci yang saya perlukan.

The machine.configterletak di

32-bit

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64-bit

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Harapan yang membantu seseorang di luar sana dan menghemat beberapa jam mencabut rambut.


Poin yang bagus. Namun yang terbaik adalah mengembalikan mode ritel ke true ketika Anda selesai (atau mematikan mode debug di web.config, yang akan mengganggu mesin pengembangan Anda). Lihat weblogs.asp.net/lasse/archive/2009/04/28/…
Stephen Kennedy

Ini tampaknya merupakan pengaturan default di .NET 4.0 - Saya mengalami kesulitan yang sama untuk mengetahuinya. Setuju bahwa ini adalah pengaturan yang baik untuk digunakan dalam lingkungan produksi, tetapi melihat kesalahan NYATA sangat penting ketika debugging.
Jeremy

tidak hanya menghemat waktu saya juga menyelamatkan hidup saya. itulah yang berhasil bagi saya
Pouya Samie

142

"Off" peka huruf besar-kecil.

Periksa apakah "O" dalam huruf besar di file web.config Anda, saya sudah menderita itu beberapa kali (sesederhana kedengarannya)


49

Demi menambahkan lebih banyak situasi pada pertanyaan ini (karena di sinilah saya melihat karena saya memiliki masalah yang sama persis), inilah jawaban saya:

Dalam kasus saya, saya memotong / menempelkan teks dari kesalahan umum yang berlaku jika Anda ingin melihat apa yang salah, cantumkan

<system.web>
   <customErrors mode="Off"/>
</system.web>

Jadi ini seharusnya sudah memperbaikinya, tapi tentu saja tidak! Masalah saya adalah bahwa ada simpul <system.web> beberapa baris di atas (sebelum simpul kompilasi dan otentikasi), dan tag penutup </system.web> beberapa baris di bawahnya. Setelah saya memperbaiki ini, OK, masalah terpecahkan. Apa yang seharusnya saya lakukan adalah menyalin / menempel hanya baris ini:

<customErrors mode="Off"/>

Ini dari catatan sejarah tentang Hal-Hal Bodoh yang Terus Saya Lakukan Berulang-ulang, dalam bab berjudul "Salin dan Tempel Jalan Anda ke Penghancuran".


Pertanyaan: Jawaban ini menyiratkan bahwa ASP membaca web.config dan file konfigurasi lainnya dari atas, yaitu: top-down. Saya pikir file konfigurasi dibaca sebagai "contoh tunggal" yang berarti bahwa kompiler pertama mem-parsing file konfigurasi untuk akurasi dan kemudian mengkompilasinya, tetapi tampaknya mengkompilasinya pada baris-demi baris. Benarkah itu?
Fandango68

@ Fernando68, ini sebaiknya dimasukkan sebagai pertanyaan terpisah - diskusi dalam komentar tidak sepenuhnya optimal. Saya bukan seorang insinyur NET., Tapi jelas. NET tidak mengkompilasinya baris demi baris. Ini file Xml, dan karenanya bersifat hierarkis. Tetapi jika hierarki terbentuk dengan buruk, parser Xml akan melemparkan pengecualian saat menguraikannya. Dengan kata lain, ia harus mengambil seluruh file Xml secara keseluruhan - tetapi jika menemui Xml yang buruk, ia tidak dapat membangun objek yang diperlukan sama sekali!
Cyberherbalist

Saya sudah mengajukannya sebagai pertanyaan terpisah stackoverflow.com/questions/30471043/… . Terima kasih atas tanggapan Anda, yang secara efektif adalah jawaban yang saya dapatkan di pos saya yang lain. Cheers
Fandango68

10

Untuk aplikasi Sharepoint 2010, Anda juga harus mengedit C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.configdan mendefinisikan<customErrors mode="Off" />


7

Saya mencoba sebagian besar barang yang dijelaskan di sini. Saya menggunakan VWD dan file web.config bawaan berisi:

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

Saya mengubah mode = "RemoteOnly" ke mode = "Off". Masih tidak ada sukacita. Saya kemudian menggunakan manajer IIS, properti, ASP.Net Tab, Edit konfigurasi, lalu pilih tab CustomeErrors. Ini masih menunjukkan RemoteOnly. Saya mengubah ini menjadi Tidak Aktif dan akhirnya saya bisa melihat pesan kesalahan terperinci.

Ketika saya memeriksa web.config saya melihat bahwa ada dua node CustomErrors di system.web; dan saya baru saja memperhatikan bahwa entri kedua (yang saya ubah ada di dalam komentar). Jadi cobalah untuk tidak menggunakan notepad untuk memeriksa web.config pada server jarak jauh.

Namun, jika Anda menggunakan IIS edit hal konfigurasi itu akan mengeluh tentang kesalahan di web.config. Kemudian Anda dapat mengesampingkan semua jawaban yang mengatakan "apakah ada kesalahan sintaks XML di web.config Anda"


Mengubah web.config di tingkat Situs Web berhasil bagi saya. Sebelumnya saya telah bermain-main dengan file aplikasi web.config, gagal. Terima kasih!
The1nk

7

Satu jawaban yang benar-benar berfungsi untuk memperbaikinya, saya temukan di sini: https://stackoverflow.com/a/18938991/550975

Tambahkan saja ini ke web.config:

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

3
Saya menemukan <httpErrors errorMode="Detailed" />memberi saya semua informasi yang saya butuhkan`
alastairtree


5

Saya juga punya masalah ini, tetapi ketika menggunakan Apache dan mod_mono. Bagi siapa pun yang berada dalam situasi itu, Anda harus memulai ulang Apache setelah mengubah web.config untuk memaksa versi baru dibaca.


5

Jika Anda masih mendapatkan halaman itu, kemungkinan itu meledak sebelum melewati Web.Config

Pastikan ASP.Net memiliki izin yang diperlukan untuk hal-hal seperti folder .Net Framework, IIS Metabase, dll. Apakah Anda punya cara untuk memeriksa apakah ASP.Net diinstal dengan benar dan dikaitkan dengan IIS dengan benar?

Sunting: Setelah komentar Greg, itu terjadi pada saya, saya berasumsi bahwa apa yang Anda posting adalah seluruh web.config Anda yang sangat minim, apakah ada yang lebih dari itu? Jika demikian, bisakah Anda memposting seluruh web.config?


Beberapa kali saya mengalami masalah ini, ternyata ada kesalahan di web.config - pasti pergi dengan w / sisir bergigi pertama.
Greg Hurlman

Ya, jengkel saya telah mengganti web.config saya ke pengaturan minimal ini. Masih tidak ada sukacita
Radu094

Pengguna pada kumpulan aplikasi yang digunakan tidak memiliki izin baca ke direktori tempat aplikasi saya digunakan. Masih tidak tahu mengapa saya tidak bisa mendapatkan kesalahan untuk menunjukkan bahwa biarkan saya tahu itu masalahnya.
lambacck

Seringkali kesalahan ini hanya dapat ditemukan di log peristiwa sistem / keamanan (sampai IIS 7), tetapi memiliki akses ke log peristiwa dengan mudah dalam banyak kasus adalah masalahnya.
Nick Craver

5

Masalah saya adalah bahwa saya mendefinisikan ini di web.config saya

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <remove statusCode="500" />
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/Internal" />
</httpErrors>

2
Pengganti untuk <httpErrors errorMode="Detailed"membantu sebagai contoh
it3xl

2

Sebenarnya, apa yang saya tahu saat hosting aplikasi web saya adalah kode yang Anda kembangkan pada Mesin lokal Anda adalah versi yang lebih tinggi daripada yang ditawarkan perusahaan hosting kepada Anda. Jika Anda memiliki hak admin, Anda mungkin dapat mengubah dukungan versi Microsoft ASP.NET di bawah pengaturan hosting web


2

Kami memiliki masalah ini dan itu karena pengguna IIS tidak memiliki akses ke konfigurasi mesin di server web.


2

Kami juga mengalami kesalahan ini dan dalam kasus kami itu karena pengguna kumpulan aplikasi tidak memiliki izin ke file web.config lagi. Alasan kehilangan izin (semuanya baik-baik saja sebelumnya) adalah karena kami memiliki cadangan situs dalam file rar dan saya menyeret versi cadangan web.config dari rar ke situs. Ini tampaknya telah menghapus semua izin untuk file web.config kecuali saya, pengguna yang masuk log.

Kami butuh beberapa saat untuk mencari tahu karena saya berulang kali memeriksa izin pada tingkat folder, tetapi tidak pernah pada tingkat file.


2

Saya memiliki masalah yang sama tetapi menemukan tekad dengan cara yang berbeda.

-

Apa yang saya lakukan adalah, saya membuka Pengaturan Lanjutan untuk Pool Aplikasi di IIS Manager .

Di sana saya mengatur Aktifkan Aplikasi 32-Bit ke True .


1

Coba mulai ulang aplikasi (membuat app_offline.htm daripada menghapusnya) dan jika Anda masih mendapatkan pesan kesalahan yang sama, pastikan Anda hanya mendeklarasikan customErrors sekali di web.config, atau semacamnya. Kesalahan di web.config dapat berdampak aneh pada aplikasi.


1
setiap kali Anda memodifikasi web.config situs web akan dihidupkan ulang, tidak perlu membuat app_offline.htm!
Matt Frear

benar, saya tidak tahu mengapa saya menyarankan app_offline untuk mengatur ulang aplikasi. :)
Adam Vigh

1

Apakah Anda memiliki karakter khusus seperti æøå di web.config Anda? Jika demikian, pastikan encoding diatur ke utf-8.


1

Apakah aplikasi web ini diatur di bawah aplikasi lain di pohon direktori situs web? Periksa semua file web.config induk untuk pengaturan lain, jika ada. Juga, buat direktori Anda ditetapkan sebagai direktori aplikasi di IIS.


1

Jika Anda menggunakan pratinjau MVC 4, Anda bisa mengalami ini karena Anda menggunakan HandleErrorAttribute. Perilaku berubah dalam 5 sehingga tidak menangani pengecualian jika Anda mematikan kesalahan khusus.


1

Anda juga dapat mencoba memunculkan situs web dalam browser di mesin server. Saya tidak melakukan banyak pengembangan ASP.NET, tapi saya ingat hal kesalahan khusus memiliki pengaturan untuk hanya menampilkan teks kesalahan penuh di server, sebagai langkah keamanan.


1

Saya baru saja menangani masalah serupa. Dalam kasus saya, versi situs asp.net default adalah 1,1 ketika saya mencoba untuk memulai aplikasi web 2.0. Kesalahannya cukup sepele, tetapi tidak segera jelas mengapa kesalahan khusus tidak akan hilang, dan runtime tidak pernah menulis ke log peristiwa. Perbaikan yang jelas adalah untuk mencocokkan versi di tab IIS Asp.Net.


kami memiliki masalah yang sama. "connectionstrings" node menyebabkan kesalahan dalam framework 1.1, sedangkan app seharusnya 2.0
mosheb


0

Saya memiliki masalah yang sama, dan penyebabnya adalah bahwa IIS menjalankan ASP.NET 1.1, dan situs yang diperlukan. NET 2.0.

Pesan kesalahan tidak melakukan apa pun selain membuat saya keluar jalur selama beberapa jam.


0

Pastikan Anda menambahkan tepat setelah system.web

Saya meletakkannya di ujung node dan tidak bekerja.


0

Jika Anda melakukan transformasi konfigurasi, Anda mungkin juga perlu menghapus baris berikut dari file web.config yang relevan.

<compilation xdt:Transform="RemoveAttributes(debug)" />

0

Setelah mencoba semua jawaban di sini, ternyata Application_Errormetode saya memiliki ini:

Server.ClearError();
Response.Redirect("/Home/Error");

Menghapus garis-garis ini dan pengaturan memperbaiki masalah. (Klien masih diarahkan ke halaman kesalahan dengan customErrors="On").


0

Saya memiliki masalah yang sama, dan saya pergi melalui log aplikasi penampil acara di mana disebutkan dengan jelas karena pengecualian ini terjadi. Dalam kasus saya pengecualian adalah seperti di bawah ini ...

Informasi pengecualian:

Exception type: HttpException 
Exception message: The target principal name is incorrect.  Cannot generate SSPI context.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

The target principal name is incorrect.  Cannot generate SSPI context.

Saya baru saja memperbarui kata sandi di kumpulan aplikasi dan berfungsi untuk saya.


0

Dalam beberapa kasus juga mungkin bahwa web.config tidak diformat dengan benar. Dalam hal ini Anda harus melewati itu baris demi baris sebelum bekerja. Seringkali, menulis ulang aturan adalah penyebabnya di sini.


0

Itu sangat aneh. Saya mendapatkan kesalahan ini dan setelah me-reboot server saya menghilang.


0

Bagi saya itu adalah kesalahan yang lebih tinggi di web.config di atas system.web.

file bla tidak ada jadi itu melempar kesalahan pada saat itu. Karena belum masuk ke bagian System.Web namun menggunakan pengaturan default server untuk CUstomErrors (Aktif)


(Posting ini sepertinya tidak memberikan jawaban yang berkualitas untuk pertanyaan. Harap edit jawaban Anda dan perbaiki, atau cukup
kirimkan
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.