Tôi muốn xử lý các trường hợp ngoại lệ chưa được thực hiện trong ứng dụng ASP.NET MVC 3 của mình, để tôi có thể truyền đạt lỗi cho người dùng thông qua giao diện lỗi của ứng dụng. Làm thế nào để tôi chặn các trường hợp ngoại lệ không bị bắt? Tôi muốn để có thể làm điều này trên toàn cầu, không phải cho mỗi bộ điều khiển (mặc dù tôi sẽ không nhớ làm thế nào để làm điều này là tốt).Làm thế nào để xử lý các ngoại lệ không bị bắt trong một ứng dụng ASP.NET MVC 3?
Trả lời
Bạn có thể thiết lập một bộ lọc lỗi toàn cầu trong Global.asax
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Các bộ trên lên một lỗi xử lý mặc định mà chỉ đạo tất cả các ngoại lệ đối với các sai số chuẩn View. Chế độ xem lỗi được nhập vào đối tượng mô hình System.Web.Mvc.HandleErrorInfo
hiển thị chi tiết ngoại lệ.
Bạn cũng cần bật các lỗi tùy chỉnh trong web.config để xem điều này trên máy cục bộ của mình.
<customErrors mode="On"/>
Bạn cũng có thể xác định nhiều bộ lọc với nhiều loại lỗi cụ thể:
filters.Add(new HandleErrorAttribute
{
ExceptionType = typeof(SqlException),
View = "DatabaseError",
Order = 1
});
/* ...other error type handlers here */
filters.Add(new HandleErrorAttribute()); // default handler
Lưu ý rằng HandleErrorAttribute
sẽ chỉ xử lý các lỗi xảy ra bên trong các đường ống dẫn MVC (ví dụ: 500 lỗi).
bạn có thể sử dụng bộ lọc HandleErrorAttribute,
[ErrorHandler(ExceptionType = typeof(Exception), View = "UnhandledError", Order = 1)]
public abstract class BaseController : Controller
{
}
về cơ bản bạn có thể có điều này trên đầu trang của một bộ điều khiển cơ sở và xác định các UnhandledError.cshtml trong Shared xem thư mục.
Và nếu bạn muốn ghi lại các lỗi chưa được xử lý trước khi bạn hiển thị thông báo lỗi thì bạn có thể mở rộng lớp HandleErrorAttribute và đặt logic để ghi nhật ký bên trong phương thức OnException.
public class MyErrorHandlerAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext exceptionContext)
{
Logger.Error(exceptionContext.Exception.Message,exceptionContext.Exception);
base.OnException(exceptionContext);
}
}
Vì mục đích đầy đủ, cũng có trình xử lý Application_Error trong Global.asax.
để làm cho công việc này, tôi theo sau blog post và sau đó thực hiện việc bổ sung sau đây để cả hai tập tin Web.config (một trong những gốc và một trong các thư mục Views) bên trong <system.web>
nút:
...
<system.web>
<customErrors mode="On"/>
...
Hy vọng nó sẽ giúp ...
Lỗi toàn cầu Xử lý
Thêm vào web.config
<customErrors mode="On"/>
Lỗi sẽ được hiển thị trên Error.cshtml đó là cư trú trong chia sẻ thư mục
- Thay đổi trong Error.cshtml
@model System.Web.Mvc.HandleErrorInfo @{ ViewBag.Title = "Error"; } <h2> <p>Sorry, an error occurred while processing your request.</p> <p>Controller Name: @Model.ControllerName</p> <p>Action Name : @Model.ActionName</p> <p>Message: @Model.Exception.Message</p> </h2>
- 1. Xử lý ngoại lệ ASP.NET MVC
- 2. ngoại lệ Xử lý trong global.asax ASP.NET MVC
- 3. ASP.net MVC [HandleError] không bắt ngoại lệ
- 4. Xử lý ngoại lệ trong một ứng dụng web Java
- 5. Xử lý ngoại lệ trong Bộ điều khiển (ASP.NET MVC)
- 6. Làm cách nào để xử lý các ngoại lệ chung trong Asp.Net MVC?
- 7. Làm thế nào để xử lý một ngoại lệ trong một nhà máy điều khiển ASP.NET MVC
- 8. Xử lý ngoại lệ ASP.NET MVC Web API
- 9. Tại sao ngoại lệ win32 không bị bắt bởi cơ chế xử lý ngoại lệ C#
- 10. Trong ASP.NET làm thế nào để xác định/xử lý các trường hợp ngoại lệ 404?
- 11. Làm thế nào để xử lý unhandled thread-ngoại lệ trong ASP.NET?
- 12. Làm thế nào để sử dụng Autofac trong một ứng dụng web 3 lớp (ASP.NET MVC)?
- 13. Xử lý ngoại lệ ASP.NET/Đăng nhập
- 14. Làm thế nào để xử lý 'Xem không tìm thấy' InvalidOperationException trong asp.net MVC?
- 15. asp.net mvc 3 nhận ngoại lệ được ném
- 16. Có một lý do hợp lệ nào để bỏ qua một ngoại lệ bị bắt
- 17. Làm thế nào để tôi ngừng ứng dụng của tôi khỏi việc chuộc lại sau khi tôi xử lý một ngoại lệ không bị bắt?
- 18. Làm thế nào để xử lý các ngoại lệ EMJILE nodejs mà không sửa đổi ulimit?
- 19. Làm cách nào để xử lý các ngoại lệ REST?
- 20. Xử lý lỗi trong ASP.NET MVC
- 21. Việc cần làm với một ngoại lệ bị bắt
- 22. Làm cách nào để xử lý ngoại lệ?
- 23. Làm thế nào để bắt ngoại lệ đọc trong Haskell?
- 24. Làm thế nào để xử lý các ngoại lệ mã trong node.js?
- 25. Làm thế nào để xử lý lỗi ứng dụng ASP.NET xảy ra trên ứng dụng bắt đầu và chuyển & hiển thị lỗi trong chế độ xem MVC?
- 26. ngoại lệ python không được nhận dạng; làm thế nào để xử lý với ngoại trừ?
- 27. BackgroundWorker xử lý ngoại lệ
- 28. Làm thế nào để xử lý các ngoại lệ về một chủ đề hành vi
- 29. Ngoại lệ chưa xử lý trong Flup
- 30. Làm thế nào để ném và xử lý các ngoại lệ trong Đề án R6RS
Cảm ơn bạn, điều này làm việc rất tốt :) – aknuds1