Vấn đề:Xử lý ngoại lệ trong ASP.NET Web Api 2
tôi cần phải xử lý web api 2 trường hợp ngoại lệ và trả về một đối tượng phong phú với mã trạng thái chính xác (401 cho trái phép, 404 cho ContentNotFound, vv) và một số thông tin bổ sung làm nội dung. Hơn nữa, tôi cần nội dung trông giống như đối tượng Exception
được tuần tự hóa (có các thuộc tính message
, exceptionMessage
, stackTrace
, ...).
Solutions Đề xuất:
Tạo lớp ngoại lệ tùy chỉnh và viết một bộ lọc ngoại lệ tùy chỉnh để áp dụng đối với hành động của bất kỳ bộ điều khiển. này bộ lọc tùy chỉnh ngoại lệ xử lý các ngoại lệ ném theo kiểu của nó (một trong những trường hợp ngoại lệ tùy chỉnh mà tôi đã xác định) và phản ứng phù hợp qua một cái gì đó như thế này (mã lọc của):
context.Response = context.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new Exception("my exception")));
gói web đã viết api 2
*ActionResult
các lớp học (System.Web.Http.Results.UnauthorizedResult Unauthorized()
,System.Web.Http.Results.OkResult Ok()
, v.v.) và thêm một số dữ liệu tùy chỉnh vào chúng và sử dụng chúng để kết quả của chúng được truyền cho khách hàng mỗi khi chúng được gọi (sự cố trong trường hợp này là kiểu trả về của hành động của controller làIHttpActionResult
không dễ dàng kiểm chứng và có thể đọc được như một hành động được đánh máy mạnh).
tôi nên chọn giải pháp gì? Hay có cách nào khác để làm những gì tôi đang cố đạt được ở đây?
bài này đã giúp tôi sử dụng ví dụ trên "bộ lọc ngoại lệ" liên kết. – Stuart
@Stuart Đẹp! Tôi vui vì nó đã cho bạn một gợi ý tốt. BTW, tôi sẽ đi với xử lý ngoại lệ để thay thế! http://www.asp.net/web-api/overview/error-handling/web-api-global-error-handling –