โดยทั่วไป:
ใช้IncludeErrorDetailPolicy
แทนหากCustomErrors
ไม่สามารถแก้ได้สำหรับคุณ (เช่นถ้าคุณเป็น ASP.NET stack คือ> 2012):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
หมายเหตุ: โปรดระมัดระวังการส่งคืนข้อมูลข้อผิดพลาดโดยละเอียดสามารถเปิดเผยข้อมูลที่ละเอียดอ่อนถึง 'แฮ็กเกอร์' ดูความคิดเห็นของ Simon ในคำตอบนี้ด้านล่าง
TL; DR เวอร์ชัน
สำหรับฉันCustomErrors
ไม่ได้ช่วยจริงๆ มันถูกตั้งค่าไว้แล้วOff
แต่ฉันก็ยังได้รับan error has occurred
ข้อความเลวทรามต่ำช้า ฉันเดาว่าคำตอบที่ได้รับการยอมรับมาจาก 3 ปีที่แล้วซึ่งเป็นเวลานานในคำเว็บในปัจจุบัน ฉันใช้ Web API 2 และ ASP.NET 5 (MVC 5) และ Microsoft ได้ย้ายออกจากกลยุทธ์ IIS เท่านั้นในขณะที่CustomErrors
เป็น skool IIS เก่า)
อย่างไรก็ตามฉันมีปัญหาเกี่ยวกับการผลิตที่ฉันไม่มีในท้องถิ่น จากนั้นพบว่าฉันไม่เห็นข้อผิดพลาดในแท็บเครือข่ายของ Chrome เหมือนที่ฉันทำได้ในเครื่อง dev ของฉัน ในที่สุดฉันก็สามารถแก้ไขได้โดยการติดตั้ง Chrome บนเซิร์ฟเวอร์ที่ใช้งานจริงของฉันและจากนั้นเรียกดูแอปที่อยู่บนเซิร์ฟเวอร์นั้นเอง (เช่น 'localhost') จากนั้นข้อผิดพลาดโดยละเอียดเพิ่มเติมปรากฏขึ้นพร้อมกับร่องรอยสแต็กและทั้งหมด
หลังจากนั้นฉันก็พบบทความนี้จาก Jimmy Bogard (หมายเหตุ: Jimmy is mr. AutoMapper! ) สิ่งที่ตลกคือบทความของเขานั้นมาจาก 2012 แต่ในนั้นเขาอธิบายแล้วCustomErrors
ว่าไม่ได้ช่วยอะไรอีกต่อไป แต่คุณสามารถเปลี่ยน 'รายละเอียดข้อผิดพลาด' โดยการตั้งค่าที่แตกต่างIncludeErrorDetailPolicy
ในการกำหนดค่า WebApi ทั่วโลก (เช่นWebApiConfig.cs
):
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
โชคดีที่เขายังอธิบายวิธีตั้งค่า webapi ที่ (2) ฟังการCustomErrors
ตั้งค่าของคุณ นั่นเป็นวิธีการที่สมเหตุสมผลและสิ่งนี้ช่วยให้คุณย้อนกลับไปยังปี 2555: P
หมายเหตุ: ค่าเริ่มต้นคือ 'LocalOnly' ซึ่งอธิบายถึงสาเหตุที่ฉันสามารถแก้ไขปัญหาในแบบที่ฉันอธิบายก่อนที่จะค้นหาโพสต์นี้ แต่ฉันเข้าใจว่าทุกคนไม่สามารถห่างไกลจากการผลิตและเริ่มต้นเบราว์เซอร์ (ฉันรู้ว่าฉันไม่สามารถทำได้จนกว่าฉันจะตัดสินใจอิสระและ DevOps)