Masalah
ketika saya secara manual mengatur HTTP Status
aliran respons saya ke, katakanlah, 404
atau 503
, IIS merender konten / tampilan IIS stok, alih-alih tampilan kustom saya.
Ketika saya melakukan ini dengan server pengembangan web (AKA. Cassini ), ia berfungsi dengan benar (yaitu, konten saya ditampilkan dan response.statuscode
== data yang saya masukkan).
Apakah ada cara saya bisa mengesampingkan perilaku ini?
Cara Replikasi
Buat aplikasi web ASP.NET MVC1 default. Tambahkan rute berikut
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{*catchall}",
new { controller = "Home", action = "Index" }
);
}
Sekarang ganti metode Indeks HomeController's dengan ...
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
Response.StatusCode = 404;
return View();
}
}
Cara lain untuk mem-bypass ini adalah dengan menjalankan kode berikut dalam aplikasi ASP Anda:
Sumber: /programming//a/21271085/238753
sumber
Hati-hati dengan pendekatan itu secara umum. Anda TIDAK boleh membuat tampilan status 404.
Saya pikir ketika kode status kesalahan dikembalikan, IIS mengembalikan halaman kesalahan status yang terdaftar dengannya - bukan output dari pemrosesan. Jadi, Anda dapat meletakkan halaman HTML di sana (atau tautan ke halaman aspx). http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx memiliki penjelasan yang bagus tentang cara mengatur halaman kesalahan.
Tapi itu tidak relevan. Cukup banyak peramban yang secara default TIDAK menunjukkan keluaran itu, tetapi ada sesuatu yang diatur dalam peramban itu. Jadi, jika Anda mengandalkan orang yang melihat halaman 404 Anda - itu mungkin tidak terjadi. Mereka mungkin melihat halaman 404 yang diatur di browser untuk mereka.
sumber