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?!

Radu094
sumber
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.

Blaise
sumber
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)

juan
sumber
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".

Cyberherbalist
sumber
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" />

Rubens Farias
sumber
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"

Khanzor
sumber
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>
Serj Sagan
sumber
3
Saya menemukan <httpErrors errorMode="Detailed" />memberi saya semua informasi yang saya butuhkan`
alastairtree
6

Anda biasanya dapat menemukan informasi lebih lanjut tentang kesalahan dalam Peraga Peristiwa, jika Anda memiliki akses ke sana. Penyedia Anda mungkin juga telah mencegah kesalahan khusus agar tidak ditampilkan sama sekali, dengan menimpanya di machine.config mereka, atau mengatur atribut ritel menjadi true ( http://msdn.microsoft.com/en-us/library/ms228298 ( VS.80) .aspx ).

digitaljeebus
sumber
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.

Mikel
sumber
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?

Nick Craver
sumber
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>
Dongolo Jeno
sumber
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

Joseph D'Souza
sumber
2

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

Tjaart
sumber
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.

Ghlouw
sumber
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 .

Levi Johansen
sumber
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.

Adam Vigh
sumber
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.

Frederik Vig
sumber
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.

Greg Hurlman
sumber
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.


sumber
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.

Neil Barnwell
sumber
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.

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

Pastikan juga Anda mengedit web.config dan bukan website.config, seperti yang saya lakukan.

Eleanor Zimmermann
sumber
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.

SimonHL
sumber
0

Pastikan Anda menambahkan tepat setelah system.web

Saya meletakkannya di ujung node dan tidak bekerja.

Nayef
sumber
0

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

<compilation xdt:Transform="RemoveAttributes(debug)" />
Hildebrand yang kaya
sumber
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").

EM0
sumber
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.

Niraj Trivedi
sumber
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.

pembuat keripik
sumber
0

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

Ustin
sumber
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)

andrew wisener
sumber
(Posting ini sepertinya tidak memberikan jawaban yang berkualitas untuk pertanyaan. Harap edit jawaban Anda dan perbaiki, atau cukup
kirimkan