Tôi đang phát triển một trang web cơ sở MVC3 và tôi đang tìm giải pháp xử lý lỗi và Hiển thị Chế độ xem tùy chỉnh cho từng loại lỗi. Vì vậy, hãy tưởng tượng rằng tôi có Bộ điều khiển "Lỗi" trong đó hành động chính của anh ta là "Chỉ mục" (trang lỗi chung) và bộ điều khiển này sẽ có thêm một số hành động cho các lỗi có thể xuất hiện cho người dùng như "Xử lý 500" hoặc "Xử lýActionNotFound".
Vì vậy, mọi lỗi có thể xảy ra trên trang web có thể được xử lý bởi Trình điều khiển "Lỗi" này (ví dụ: "Trình điều khiển" hoặc "Hành động" không tìm thấy, 500, 404, dbException, v.v.).
Tôi đang sử dụng tệp Sơ đồ trang web để xác định đường dẫn trang web (chứ không phải tuyến đường).
Câu hỏi này đã được trả lời, đây là câu trả lời cho Gweebz
Phương pháp applicaiton_error cuối cùng của tôi là như sau:
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");
}
}
}