ฉันจะตรวจจับข้อยกเว้นที่ไม่ได้จัดการทั้งหมดที่เกิดขึ้นใน 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 ได้บ้าง