Saya memiliki tindakan yang mengambil string yang digunakan untuk mengambil beberapa data. Jika string ini tidak menghasilkan data yang dikembalikan (mungkin karena telah dihapus), saya ingin mengembalikan 404 dan menampilkan halaman kesalahan.
Saat ini saya hanya menggunakan kembali tampilan khusus yang menampilkan pesan kesalahan ramah khusus untuk tindakan ini mengatakan bahwa item itu tidak ditemukan. Ini berfungsi dengan baik, tetapi idealnya ingin mengembalikan kode status 404 sehingga mesin pencari tahu bahwa konten ini tidak ada lagi dan dapat menghapusnya dari hasil pencarian.
Apa cara terbaik untuk masalah ini?
Apakah sesederhana mengatur Response.StatusCode = 404?
asp.net-mvc
error-handling
http-status-code-404
Paul Hiles
sumber
sumber
Jawaban:
Ada beberapa cara untuk melakukannya,
throw new HttpException(404, "Some description");
sumber
Dalam ASP.NET MVC 3 dan di atas Anda dapat mengembalikan HttpNotFoundResult dari controller.
sumber
return new HttpNotFoundResult("optional description");
HttpNotFound()
. Jadi Anda bisa kembalireturn HttpNotFound("optional description")
.Di MVC 4 dan di atas Anda dapat menggunakan
HttpNotFound
metode pembantu bawaan:atau
sumber
Kode:
Web.config
sumber
Saya telah menggunakan ini:
sumber
Jika Anda bekerja dengan .NET Core, Anda bisa
return NotFound()
sumber
Dalam NerdDinner misalnya. Coba itu
sumber
Tidak ada contoh di atas yang berfungsi untuk saya hingga saya menambahkan garis tengah di bawah ini:
sumber
return HttpNotFound();
tidak berhasil untuk Anda? Berapa umur sistem Anda?return HttpNotFound();
? Ini berfungsi dengan baik dengan MVC 4 ke atas. msdn.microsoft.com/en-us/library/… "Properti TrySkipIisCustomErrors hanya digunakan ketika aplikasi Anda di-host di IIS 7.0. Ketika menjalankan dalam mode Klasik di IIS 7.0 nilai default properti TrySkipIisCustomErrors bernilai true. Ketika berjalan dalam mode Terpadu , nilai default properti TrySkipIisCustomErrors salah. "Saya menggunakan:
Ini bekerja untuk saya :-)
sumber
Di .NET Core 1.1:
sumber
Anda juga dapat melakukan:
sumber
Silakan coba kode demo berikut:
sumber