Tôi nghĩ rằng MVC, ASP và khung xử lý ghi nhật ký / ngoại lệ yêu thích của bạn có thể xử lý các mục tiêu của bạn khá độc đáo. ELMAH và Thư viện doanh nghiệp đều cung cấp dễ dàng sử dụng xử lý ngoại lệ và ghi nhật ký, vì vậy hãy chọn mục yêu thích của bạn .. Tôi sẽ không đi vào ưu và nhược điểm của từng loại ở đây.
LƯU Ý: bạn không thể hiển thị trang lỗi thân thiện VÀ trả lại HTTP 404 hoặc 500 như câu hỏi của bạn gợi ý. Khi bạn trả lại trang lỗi thân thiện, mã HTTP được trả về trình duyệt của bạn sẽ là 302. Đây là chuyển hướng đến trang lỗi thân thiện.
Trang lỗi thân thiện
Có vẻ như bạn có thể đạt được mục tiêu của mình bằng các cài đặt web.config thời trang tốt đã từng là một phần của ASP.net. Bạn đề cập đến việc hiển thị thông tin gỡ lỗi khi trong dev và hiển thị các trang thân thiện trong sản xuất. Bạn có thể sử dụng phần lỗi tùy chỉnh của web.config cho việc này (Đặt CustomErrors = "Tắt" để hiển thị thông tin gỡ lỗi). Tôi sẽ giả định rằng bạn quen thuộc với thuộc tính CustomErrors, nếu không đọc điều này:
http://msdn.microsoft.com/en-us/l Library / h0hfz6fc.aspx
Nếu bạn cần mức độ chi tiết cao hơn của quyền kiểm soát đối với các chế độ xem lỗi mà bạn hiển thị, thì hãy sử dụng Thuộc tính Xử lýError của MVC. Bằng cách này, bạn có thể chọn các chế độ xem lỗi khác nhau cho mỗi Hành động / Trình điều khiển.
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
Ghi nhật ký ngoại lệ
Có vẻ như bạn muốn phản hồi tất cả các trường hợp ngoại lệ của mình theo cùng một cách ('Đăng nhập lỗi và gửi email cho quản trị viên trong sản xuất'). Nếu đây là trường hợp, tùy chọn đơn giản nhất của bạn là thêm mã vào
Application_Error (người gửi đối tượng, EventArss e)
trong global.asax của bạn. Đây là nơi bạn có thể chuyển qua khung đăng nhập đã chọn.
Nếu bạn muốn kiểm soát nhiều hơn đối với việc ghi / xử lý ngoại lệ của mình thì bạn có thể phân lớp Xử lýErrorAttribution và ghi đè
OnException(System.Web.Mvc.ExceptionContext filterContext)
đây là một nơi khác mà bạn có thể chuyển qua khung đăng nhập đã chọn.
https://stackoverflow.com/questions/183316/asp-net-mvc-handleerror
Điều này cho phép bạn kiểm soát nhiều hơn kỹ thuật Application_Error đã đề cập ở trên.
Nói chung, MVC cung cấp cho bạn mức độ chi tiết cao về cách kiểm soát lỗi. Nếu bạn không cần điều khiển này thì bạn có thể quay lại các cách thực hiện của ASP.net như xác định các trang lỗi trên web.config.