วิธีการวินิจฉัย 500 Internal Server Error บน IIS 7.5 เมื่อไม่มีสิ่งใดถูกเขียนไปยังบันทึกเหตุการณ์?


43

ฉันเพิ่งปรับใช้การอัปเดตไปยังไซต์ ASP.NET MVC3 ที่มีอยู่ (มันได้รับการกำหนดค่าแล้ว) และฉันได้รับหน้าจอ IIS สีน้ำเงินแห่งความตายที่ระบุ

HTTP Error 500.0 - เซิร์ฟเวอร์ภายในผิดพลาด
ไม่สามารถแสดงหน้าเว็บได้เนื่องจากเกิดข้อผิดพลาดเซิร์ฟเวอร์ภายใน

อย่างไรก็ตาม; ไม่มีสิ่งใดปรากฏในบันทึกเหตุการณ์ของแอปพลิเคชันซึ่งฉันคาดว่าจะเห็นคำอธิบายโดยละเอียดของรายการ

ฉันจะวินิจฉัยปัญหานี้ได้อย่างไร


ฉันมีปัญหาเดียวกันตรงนี้ จากประสบการณ์ของฉันถ้าบันทึกเหตุการณ์ว่างเปล่ากว่าคำขอไม่ได้ส่งไปยังกระบวนการของผู้ปฏิบัติงานอย่างถูกต้อง ในหนึ่งในการปรับใช้ล่าสุดของเราเราเห็นว่าแอปทำงานเป็นระยะ ๆ โดยมีประมาณ 50% ของคำขอที่สุ่มล้มเหลวด้วยข้อผิดพลาด 500 และไม่มีอะไรในบันทึก ฉันสงสัยว่ามีบางอย่างผิดปกติเกิดขึ้นกับการยกเลิกการโหลด AppDomain ที่เกิดขึ้นหลังจากการปรับใช้ จากความอยากรู้คุณใช้โปรแกรมป้องกันไวรัสในสภาพแวดล้อมการผลิตหรือไม่ การตั้งค่า IIS ใหม่ช่วยแก้ปัญหาได้หรือไม่
ShadowChaser

คำตอบ:


41

ดูคุณลักษณะการติดตามคำขอล้มเหลวของ IIS7:

การแก้ไขปัญหาคำขอที่ล้มเหลวโดยใช้การติดตามใน IIS 7
แก้ไขปัญหาด้วยการติดตามคำขอที่ล้มเหลว

สิ่งอื่น ๆ ที่ฉันจะทำคือปรับแต่ง<httpErrors>การตั้งค่าของคุณเนื่องจาก IIS อาจกลืนข้อความแสดงข้อผิดพลาดจากขั้นตอนต่อไป:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

หากไซต์ถูกเขียนใน Classic ASP ต้องแน่ใจว่าเปิดการตั้งค่าส่งข้อผิดพลาดไปยังเบราว์เซอร์ในคุณสมบัติการกำหนดค่า ASP:

ป้อนคำอธิบายรูปภาพที่นี่

และสุดท้ายหากคุณใช้ Internet Explorer ตรวจสอบให้แน่ใจว่าคุณได้ปิดการแสดงข้อความแสดงข้อผิดพลาด HTTP ที่เป็นมิตรในการตั้งค่าขั้นสูง (แต่ฉันสงสัยว่าคุณได้ทำไปแล้วหรือกำลังใช้เบราว์เซอร์อื่น)


2
existingResponse ถูกตั้งค่าเป็นแทนที่ ขอบคุณสำหรับทิป.
เกร็ก B

นี่เป็นคำตอบที่ดีมาก แต่ก็สามารถปรับปรุงได้หากมีวิธีเริ่มหน้าต่างการตั้งค่า ASP
Michael Potter

13

ในกรณีของฉัน:

  • บันทึกเหตุการณ์ว่างเปล่า
  • web.config ไม่ได้เสียหาย - ตรวจสอบโดยใช้เหมือนกันในเครื่อง / การใช้ inetmgr

สุดท้าย ...

  • การตรวจสอบบันทึก IIS แสดงคำขอเช่นนี้

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

กุญแจสำคัญคือ:

sc-status sc-substatus sc-win32-status 500 19 5

ซึ่งมี googling บางอย่างชี้ให้ฉันไปที่IIS_USRSไม่ได้อ่านสิทธิ์ไปยังwwwโฟลเดอร์


2
ฉันพบรายการรหัสสถานะได้ที่นี่: support.microsoft.com/en-us/help/943891/…
sirdank

4

ปัญหาที่ชัดเจนที่สุดคือสิทธิ NTFS ที่ไม่เหมาะสมหรือเป็นศูนย์ในโฟลเดอร์แอปพลิเคชันเว็บ ดังนั้นตรวจสอบให้แน่ใจว่าบัญชีที่ให้บริการเว็บไซต์นั้นมีสิทธิ์ที่ถูกต้อง หากไม่มีสิทธิ์ NTFS ที่เหมาะสมในสารบบเว็บมันไม่สำคัญว่าคุณจะใส่อะไรลงใน web.config เพราะมันจะไม่ถูกอ่าน

การตรวจสอบอย่างรวดเร็วสามารถให้สิทธิ์เต็มที่กับทุกคน - หากไซต์เริ่มทำงานแล้วคุณรู้ว่ามันเป็นปัญหาสิทธิ์และคุณสามารถตั้งค่าเกี่ยวกับการกำหนดสิทธิ์ที่เหมาะสมให้กับบัญชีที่เหมาะสมยิ่งขึ้น


1

หากอัปเกรดจาก IIS6 อาจเป็นหนึ่งใน web.config ทำงานได้ใน 6 แต่ไม่ใช่ใน IIS 7.5 ... ดับเบิลคลิกที่ไอคอนทั้งหมดใน IIS สำหรับเว็บไซต์และคุณอาจได้รับข้อผิดพลาดเกี่ยวกับรูปแบบ (มาตรา ต้องอยู่ด้านล่างส่วนอื่น ๆ ... )


0

ฉันมีปัญหาเดียวกันกับ Azure Web App ขณะทำการดีบักแบบโลคัลข้อความแสดงข้อผิดพลาด (JSON) ที่ส่งคืนจากการโทร ajax จะถูกส่งคืนไปยังเบราว์เซอร์อย่างสมบูรณ์ แต่เมื่อนำไปใช้กับ Web App ข้อความจะถูกกลืนลงไปและฉันได้รับข้อความแสดงข้อผิดพลาดเริ่มต้น 500 ดังนั้นผมจึงต้องกำหนดอย่างชัดเจนexistingResponseมูลค่าให้กับPassThroughในการ web.config httpErrorsแท็ก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.