Tôi sẽ bắt đầu với, vâng, chúng tôi đã tạo và đang sử dụng bộ lọc ngoại lệ kế thừa từ ExceptionFilterAttribute. Nó được đăng ký trong cấu hình khi khởi động ứng dụng ngay sau bộ lọc nhận dạng của chúng tôi và hoạt động khá nhiều như mong đợi nếu một lỗi xảy ra ở đâu đó bên trong API của chúng tôi.Xử lý ngoại lệ ASP.NET MVC Web API
Điều đó đang được nói, tôi đang tìm cách xử lý các lỗi xảy ra trước khi nó đạt đến API.
Lý do: Chúng tôi không bao giờ muốn trả lại lỗi YSOD và/hoặc lỗi HTML IIS. Chúng tôi LUÔN LUÔN muốn nhấn bộ lọc/bộ lọc ngoại lệ tùy chỉnh để chúng tôi có thể xử lý ghi nhật ký chính xác và trả về phản hồi JSON cho người dùng.
Ngay bây giờ, sử dụng Fiddler để thực hiện một yêu cầu, tôi có thể đính kèm vào quá trình w3wp.exe và xem yêu cầu nhấn phương thức Application_BeginRequest trong global.asax. Sau đó, nó chỉ trả về một câu trả lời 500. Nó không bao giờ phá vỡ trong mã với một ngoại lệ hoặc truy cập bất kỳ điểm break của tôi sau đó. Có vẻ như nó đang trả về lỗi IIS. Chúng tôi không bao giờ muốn điều này xảy ra. Chúng tôi cần khả năng nắm bắt tất cả các ngoại lệ "cấp thấp" này, ghi lại chúng và trả lại một cái gì đó có ý nghĩa cho người dùng.
Có điều gì đó chúng ta có thể làm để xử lý các lỗi trước đây, những gì có vẻ là nhấn mã ASP.NET MVC Web API?
Điều này cảm thấy sai bằng cách nào đó. Bạn có ném ngoại lệ trong thư viện ở đâu đó không? Tại sao không chỉ bắt ngoại lệ trong bộ điều khiển và trả về chế độ xem lỗi do bạn chọn? –
Điều này đang sử dụng API ASP.NET MVC Web, vì vậy chúng tôi không trả lại lượt xem từ bộ điều khiển. Chúng tôi trả về các phản hồi JSON/XML. Tôi cũng đề cập đến trong câu hỏi của tôi rằng tôi cần một cách để xử lý các ngoại lệ TRƯỚC KHI họ tiếp cận các bộ điều khiển. Ngay bây giờ chúng ta có một ExceptionFilter bắt các ngoại lệ ở bất cứ đâu khi chúng ta ở bên trong controller nên chúng ta không cần phải thử/nắm bắt trong mọi hành động. – phreak3eb
Tôi không nghĩ rằng tôi hoàn toàn hiểu được câu hỏi của bạn. Loại lỗi nào bạn đang cố gắng nắm bắt chính xác? – cecilphillip