Saya sedang mengembangkan situs web MVC3 dan saya mencari solusi untuk menangani kesalahan dan Render Tampilan kustom untuk setiap jenis kesalahan. Jadi bayangkan saya memiliki Pengontrol "Kesalahan" di mana tindakan utamanya adalah "Indeks" (halaman kesalahan umum) dan pengontrol ini akan memiliki beberapa tindakan lebih untuk kesalahan yang mungkin muncul kepada pengguna seperti "Handle500" atau "HandleActionNotFound".
Jadi setiap kesalahan yang mungkin terjadi pada situs web dapat ditangani oleh Pengendali "Kesalahan" ini (contoh: "Pengontrol" atau "Tindakan" tidak ditemukan, 500, 404, dbException, dll).
Saya menggunakan file peta situs untuk menentukan jalur situs web (dan bukan rute).
Pertanyaan ini sudah dijawab, ini adalah balasan untuk Gweebz
Metode applicaiton_error terakhir saya adalah sebagai berikut:
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}