TLDR: ก่อนอื่นให้กำหนดว่าคุณจะได้รับข้อผิดพลาดจากที่ใด (เลื่อนดูภาพหน้าจอของสิ่งที่คล้ายกับข้อผิดพลาดของคุณ) ทำการเปลี่ยนแปลงเพื่อรับสิ่งใหม่ทำซ้ำ
ก่อนอื่นให้พิจารณาข้อความแสดงข้อผิดพลาดที่คุณเห็น
หากคุณเห็นไฟล์อยู่ที่นี่ ...
% SystemDrive% \ inetpub \ custerr \\ 500.htm
... ซึ่งโดยทั่วไปจะมีลักษณะเช่นนี้:
... ถ้าอย่างนั้นคุณก็รู้ว่าคุณเห็นหน้าข้อผิดพลาดที่กำหนดค่าใน ** IIS ** และคุณไม่จำเป็นต้องเปลี่ยนการตั้งค่า ASP.net customErrors การตั้งค่ารายละเอียดข้อผิดพลาด asp หรือการตั้งค่าเบราว์เซอร์
คุณอาจต้องการดูเส้นทางอ้างอิงข้างต้นแทนที่จะไว้วางใจภาพหน้าจอของฉันในกรณีที่มีคนเปลี่ยนมัน
"ใช่ฉันเห็นข้อผิดพลาดที่อธิบายไว้ข้างต้น ... "
ในกรณีนี้คุณจะเห็นการตั้งค่า < httpErrors > หรือใน IIS Manager หน้าข้อผิดพลาด -> แก้ไขการตั้งค่าคุณสมบัติ ค่าเริ่มต้นสำหรับนี่คือ errorMode = DetailedLocalOnly ที่ระดับโหนดเซิร์ฟเวอร์ (ตรงข้ามกับระดับไซต์)ซึ่งหมายความว่าในขณะที่คุณจะเห็นหน้าข้อผิดพลาดที่กำหนดค่านี้ในขณะที่อยู่ห่างไกลคุณควรจะสามารถเข้าสู่ระบบในเซิร์ฟเวอร์และดูแบบเต็ม ข้อผิดพลาดซึ่งควรมีลักษณะดังนี้:
คุณควรมีทุกสิ่งที่คุณต้องการ ณ จุดนั้นเพื่อแก้ไขข้อผิดพลาดปัจจุบัน
"แต่ฉันไม่เห็นข้อผิดพลาดอย่างละเอียดแม้กระทั่งเรียกดูบนเซิร์ฟเวอร์"
นั่นทำให้ความเป็นไปได้สองสามอย่าง
- เบราว์เซอร์ที่คุณใช้บนเซิร์ฟเวอร์ได้รับการกำหนดค่าให้ใช้พร็อกซีในการตั้งค่าการเชื่อมต่อดังนั้นจึงไม่ถูกมองว่าเป็น "ท้องถิ่น"
- คุณไม่ได้ท่องไปยังไซต์ที่คุณคิดว่ากำลังเข้าชมซึ่งโดยทั่วไปจะเกิดขึ้นเมื่อมีการโหลดบาลานเซอร์ที่เกี่ยวข้อง ทำ ping check เพื่อดูว่า dns ให้ IP กับคุณบนเซิร์ฟเวอร์หรือที่อื่น ๆ
- คุณเป็นhttpErrorsของเว็บไซต์การตั้งค่าตั้งค่าเป็น "กำหนดเอง" เท่านั้น เปลี่ยนเป็น "DetailedLocalOnly" อย่างไรก็ตามหากคุณมีข้อผิดพลาดในการกำหนดค่าอาจไม่ทำงานเนื่องจาก httpErrors ระดับไซต์นั้นเป็นรายการการกำหนดค่าด้วย ในกรณีนั้นดำเนินการต่อไป # 4
- ค่าเริ่มต้นสำหรับhttpErrorsสำหรับทุกไซต์ถูกตั้งค่าเป็น "กำหนดเอง" ในกรณีนี้คุณต้องคลิกที่โหนดเซิร์ฟเวอร์ระดับบนสุดใน IIS Manager (และไม่ใช่เว็บไซต์ที่เฉพาะเจาะจง) และเปลี่ยนhttpErrorsตั้งค่านั่นเป็น DetailedLocalOnly หากนี่เป็นเซิร์ฟเวอร์ภายในและคุณไม่กังวลเกี่ยวกับการเปิดเผยข้อมูลที่ละเอียดอ่อนคุณสามารถตั้งค่าเป็น "ละเอียด" ซึ่งจะช่วยให้คุณเห็นข้อผิดพลาดจากไคลเอนต์อื่นที่ไม่ใช่เซิร์ฟเวอร์
- คุณไม่มีโมดูลบนเซิร์ฟเวอร์เช่น UrlRewrite (อันนี้กัดฉันมากและมักจะให้ข้อความทั่วไปโดยไม่คำนึงถึงการตั้งค่า httpErrors)
"การเข้าสู่เซิร์ฟเวอร์ไม่ใช่ตัวเลือกสำหรับฉัน"
เปลี่ยนhttpErrorsของเว็บไซต์เป็น"ละเอียด" เพื่อให้คุณเห็นได้จากระยะไกล แต่ถ้ามันไม่ทำงานข้อผิดพลาดของคุณอาจเป็นข้อผิดพลาดการตั้งค่าดู # 3 ทันทีด้านบน ดังนั้นคุณอาจติดกับ # 4 หรือ # 5 และคุณต้องการใครสักคนจากทีมเซิร์ฟเวอร์ของคุณ
"ฉันไม่เห็นหน้าข้อผิดพลาดที่อธิบายไว้ข้างต้นฉันเห็นสิ่งที่แตกต่าง"
ถ้าคุณเห็นสิ่งนี้ ...
... และคุณคาดหวังว่าจะเห็นอะไรเช่นนี้ ...
... จากนั้นคุณต้องเปลี่ยน "ส่งข้อผิดพลาดไปยังเบราว์เซอร์" เป็นจริงใน IIS Manager ภายใต้ไซต์ -> IIS -> ASP -> คุณสมบัติการตรวจแก้จุดบกพร่อง
ถ้าคุณเห็นสิ่งนี้ ...
หรือนี่ ...
... คุณต้องปิดการใช้งานข้อผิดพลาดที่เป็นมิตรในเบราว์เซอร์ของคุณหรือใช้เว็บวิวของพู้ทำเล่นเพื่อดูการตอบสนองที่แท้จริงเทียบกับสิ่งที่เบราว์เซอร์ของคุณเลือกที่จะแสดงให้คุณเห็น
ถ้าคุณเห็นสิ่งนี้ ...
... ดังนั้นข้อผิดพลาดที่กำหนดเองทำงาน แต่คุณไม่มีหน้าข้อผิดพลาดที่กำหนดเอง (แน่นอน ณ จุดนี้กำลังพูดถึง. net และไม่ใช่ asp ดั้งเดิม) คุณต้องเปลี่ยนแท็ก customErrors ใน web.config เป็น RemoteOnly เพื่อดูบนเซิร์ฟเวอร์หรือ Off เพื่อดูจากระยะไกล
หากคุณเห็นบางสิ่งที่มีลักษณะเหมือนไซต์ของคุณข้อผิดพลาดที่กำหนดเองน่าจะเป็น On หรือ RemoteOnly และแสดงหน้าเว็บที่กำหนดเอง (Views-> Shared-> Error.cshtml ใน MVC เป็นต้น) ที่กล่าวมาเป็นไปได้ยาก แต่มีความเป็นไปได้ที่มีคนเปลี่ยนหน้าใน IIS สำหรับ httpErrors ดังนั้นให้ดูหัวข้อแรกในส่วนนั้น