ฉันจะตรวจจับข้อยกเว้นที่ไม่ได้จัดการทั้งหมดที่เกิดขึ้นใน ASP.NET Web Api เพื่อให้สามารถบันทึกได้อย่างไร
จนถึงตอนนี้ฉันได้ลอง:
- สร้างและลงทะเบียนไฟล์
ExceptionHandlingAttribute
- ใช้
Application_Error
วิธีการในGlobal.asax.cs
- ติดตาม
AppDomain.CurrentDomain.UnhandledException
- ติดตาม
TaskScheduler.UnobservedTaskException
ExceptionHandlingAttribute
ประสบความสำเร็จจัดการข้อยกเว้นที่จะโยนภายในวิธีการดำเนินการควบคุมและตัวกรองการกระทำ แต่ข้อยกเว้นอื่น ๆ จะไม่จัดการตัวอย่างเช่น:
- ข้อยกเว้นเกิดขึ้นเมื่อ
IQueryable
ส่งคืนโดยวิธีการดำเนินการไม่สามารถดำเนินการได้ - ข้อยกเว้นที่ส่งโดยตัวจัดการข้อความ (เช่น
HttpConfiguration.MessageHandlers
) - เกิดข้อยกเว้นเมื่อสร้างอินสแตนซ์คอนโทรลเลอร์
โดยทั่วไปหากข้อยกเว้นจะทำให้เกิดข้อผิดพลาด 500 Internal Server เพื่อส่งกลับไปยังไคลเอนต์ฉันต้องการให้เข้าสู่ระบบ การนำไปใช้งานApplication_Error
นี้ทำได้ดีใน Web Forms และ MVC - ฉันจะใช้อะไรใน Web Api ได้บ้าง