Saya mencoba membuat halaman kesalahan HTTP 404 kustom ketika seseorang mengetikkan URL yang tidak menjalankan tindakan atau pengontrol yang valid di ASP.NET MVC, alih-alih menampilkan kesalahan ASP.NET generik "Resource Not Found".
Saya tidak ingin menggunakan web.config untuk menangani ini.
Apakah ada sihir perutean yang dapat saya lakukan untuk menangkap URL yang tidak valid?
Pembaruan: Saya mencoba jawaban yang diberikan, namun saya masih mendapatkan pesan "Resource Not Found" yang jelek.
Pembaruan lain: Ok, ternyata ada yang berubah di RC1. Saya bahkan telah mencoba secara khusus menjebak 404 pada sebuah HttpException
dan masih memberi saya halaman "Sumber Daya Tidak Ditemukan".
Saya bahkan telah menggunakan fitur sumber daya MvcContrib dan tidak ada - masalah yang sama. Ada ide?
Jawaban:
Cukup tambahkan tangkap semua rute di akhir tabel rute dan tampilkan halaman apa pun yang Anda inginkan dengannya.
Lihat: Bagaimana cara membuat rute tangkap semua untuk menangani kueri '404 halaman tidak ditemukan' untuk ASP.NET MVC?
sumber
Saya sudah mencoba mengaktifkan kesalahan khusus pada server produksi selama 3 jam, sepertinya saya menemukan solusi akhir bagaimana melakukan ini di ASP.NET MVC tanpa rute apa pun.
Untuk mengaktifkan kesalahan khusus dalam aplikasi ASP.NET MVC yang kita butuhkan (IIS 7+):
Konfigurasikan halaman kustom di konfigurasi web di bawah
system.web
bagian:RemoteOnly
artinya di jaringan lokal Anda akan melihat kesalahan nyata (sangat berguna selama pengembangan). Kami juga dapat menulis ulang halaman kesalahan untuk kode kesalahan apa pun.Setel parameter Respon ajaib dan kode status respon (dalam modul penanganan kesalahan atau dalam atribut penanganan kesalahan)
Tetapkan pengaturan ajaib lain di konfigurasi web di bawah
system.webServer
bagian:Ini adalah hal terakhir yang saya temukan dan setelah ini saya dapat melihat kesalahan khusus pada server produksi.
sumber
customErrors
hasil dalam pengalihan 302 hanya untuk memuat halaman kesalahan Anda.Saya mendapatkan penanganan kesalahan saya untuk bekerja dengan membuat ErrorController yang mengembalikan tampilan dalam artikel ini. Saya juga harus menambahkan "Catch All" ke rute di global.asax.
Saya tidak dapat melihat bagaimana ini akan sampai ke salah satu halaman kesalahan ini jika tidak ada di Web.config ..? Web.config saya harus menentukan:
dan kemudian saya juga menambahkan:
sumber
Sumber
NotFoundMVC - Menyediakan halaman 404 yang mudah digunakan setiap kali pengontrol, tindakan, atau rute tidak ditemukan di aplikasi ASP.NET MVC3 Anda. Tampilan yang disebut NotFound diberikan alih-alih halaman galat ASP.NET default.
Anda dapat menambahkan plugin ini melalui nuget menggunakan: Install-Package NotFoundMvc
NotFoundMvc otomatis menginstal sendiri saat aplikasi web dimulai. Ini menangani semua cara berbeda 404 HttpException biasanya dilemparkan oleh ASP.NET MVC. Ini termasuk pengontrol, tindakan, dan rute yang hilang.
Panduan Instalasi Langkah demi Langkah:
1 - Klik kanan pada Proyek Anda dan Pilih Kelola Paket Nuget ...
2 - Cari
NotFoundMvc
dan instal.3 - Setelah penginstalan selesai, dua file akan ditambahkan ke proyek Anda. Seperti yang ditunjukkan pada tangkapan layar di bawah ini.
4 - Buka NotFound.cshtml yang baru ditambahkan di Views / Shared dan ubah sesuka Anda. Sekarang jalankan aplikasi dan ketik url yang salah, dan Anda akan disambut dengan halaman 404 yang ramah pengguna.
Tidak lebih, pengguna akan mendapatkan pesan kesalahan seperti
Server Error in '/' Application. The resource cannot be found.
Semoga ini membantu :)
PS: Kudos to Andrew Davey karena telah membuat plugin yang luar biasa.
sumber
Coba ini di web.config untuk mengganti halaman kesalahan IIS. Ini adalah solusi terbaik yang saya rasa, dan mengirimkan kode status yang benar juga.
Info lebih lanjut dari Tipila - Gunakan Halaman Kesalahan Kustom ASP.NET MVC
sumber
Solusi ini tidak memerlukan perubahan file web.config atau rute penampung semua.
Pertama, buat pengontrol seperti ini;
Kemudian buat tampilan di bawah "Views / Error / Index.cshtml" sebagai;
Kemudian tambahkan yang berikut ini di file asax Global seperti di bawah ini:
Jika Anda masih mendapatkan halaman kesalahan IIS kustom setelah melakukan ini, pastikan bagian berikut diberi komentar (atau kosong) di file konfigurasi web:
sumber
Response.End();
di akhir penangan Application_Error Anda. Tanpa ini, hanya kemunculan kesalahan pertama yang dipicu untuk sesi tertentu, yang merupakan masalah ketika Anda memiliki, misalnya, pencatatan kesalahan khusus di penangan Application_Error.Jika Anda bekerja di MVC 4, Anda dapat menonton solusi ini , itu berhasil untuk saya.
Tambahkan metode Application_Error berikut ke my
Global.asax
:Pengontrolnya sendiri sangat sederhana:
Periksa kode sumber lengkap Mvc4CustomErrorPage di GitHub .
sumber
Saya memiliki masalah yang sama, hal yang harus Anda lakukan adalah, alih-alih menambahkan atribut customErrors di file web.config di folder Views Anda, Anda harus menambahkannya di file web.config di folder root proyek Anda
sumber
Berikut adalah jawaban yang benar yang memungkinkan sepenuhnya menyesuaikan halaman kesalahan di satu tempat. Tidak perlu memodifikasi web.config atau membuat kode terpisah.
Bekerja juga di MVC 5.
Tambahkan kode ini ke pengontrol:
Berdasarkan http://www.eidias.com/blog/2014/7/2/mvc-custom-error-pages
sumber
Saya akan berbicara tentang beberapa kasus tertentu,
jika Anda menggunakan 'metode PageNotFound' di HomeController seperti di bawah ini
ini tidak akan berhasil. Tetapi Anda harus menghapus tag Rute seperti di bawah ini,
Dan jika Anda mengubahnya sebagai Nama metode di web.config itu berfungsi. Namun jangan lupa untuk melakukan kode seperti di bawah ini di web.config
sumber