ฉันกำลังพัฒนาเว็บไซต์ฐาน MVC3 และฉันกำลังมองหาวิธีแก้ไขข้อผิดพลาดและกำหนดมุมมอง Render แบบกำหนดเองสำหรับข้อผิดพลาดแต่ละประเภท ลองจินตนาการว่าฉันมีตัวควบคุม "ข้อผิดพลาด" ซึ่งการกระทำหลักของเขาคือ "ดัชนี" (หน้าข้อผิดพลาดทั่วไป) และตัวควบคุมนี้จะมีการดำเนินการอีกสองสามครั้งสำหรับข้อผิดพลาดที่อาจปรากฏต่อผู้ใช้เช่น "Handle500" หรือ "HandleActionNotFound"
ดังนั้นทุกข้อผิดพลาดที่อาจเกิดขึ้นบนเว็บไซต์อาจได้รับการจัดการโดยตัวควบคุม "ข้อผิดพลาด" นี้ (ตัวอย่าง: ไม่พบ "ตัวควบคุม" หรือ "การกระทำ", 500, 404, dbException, ฯลฯ )
ฉันใช้ไฟล์ Sitemap เพื่อกำหนดเส้นทางเว็บไซต์ (ไม่ใช่เส้นทาง)
คำถามนี้ตอบแล้วนี่คือคำตอบของ Gweebz
วิธีสุดท้ายของฉันคือดังนี้:
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");
    }
}
}