Làm cách nào để chẩn đoán Lỗi 500 Máy chủ Nội bộ trên IIS 7.5 khi không có gì được ghi vào nhật ký sự kiện?


43

Tôi vừa triển khai một bản cập nhật cho một trang web ASP.NET MVC3 hiện có (nó đã được cấu hình) và tôi đang nhận được màn hình xanh chết chóc của IIS

Lỗi HTTP 500.0 - Lỗi máy chủ nội bộ
Trang không thể hiển thị vì đã xảy ra lỗi máy chủ nội bộ.

Tuy nhiên; không có gì hiển thị trong Nhật ký sự kiện ứng dụng nơi tôi mong đợi để xem mô tả chi tiết (chi tiết) của mục nhập.

Làm thế nào tôi có thể đi về chẩn đoán vấn đề này?


Tôi đã có cùng một vấn đề chính xác ở đây. Theo kinh nghiệm của tôi, nếu nhật ký sự kiện trống hơn yêu cầu không được định tuyến chính xác đến quy trình worker. Trong một trong những triển khai gần đây của chúng tôi, chúng tôi đã thấy ứng dụng hoạt động không liên tục với khoảng 50% yêu cầu thất bại ngẫu nhiên với lỗi 500 và không có gì trong nhật ký. Tôi nghi ngờ có điều gì đó không ổn với việc dỡ tải AppDomain xảy ra sau khi triển khai. Vì tò mò, bạn có đang chạy chương trình chống vi-rút trong môi trường sản xuất của mình không? Liệu thiết lập lại IIS có giải quyết được vấn đề (cho đến khi triển khai tiếp theo) không?
ShadowChaser

Câu trả lời:


41

Hãy xem tính năng Truy tìm yêu cầu thất bại của IIS7:

Khắc phục sự cố các yêu cầu thất bại bằng cách sử dụng theo dõi trong IIS 7
Khắc phục sự cố với theo dõi yêu cầu không thành công

Một điều khác tôi sẽ làm là điều chỉnh <httpErrors>cài đặt của bạn vì IIS có thể đang nuốt một thông báo lỗi từ hơn nữa lên đường ống dẫn:

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

Nếu trang web được viết bằng Classic ASP thì hãy chắc chắn bật cài đặt Gửi lỗi đến trình duyệt trong tính năng cấu hình ASP:

nhập mô tả hình ảnh ở đây

Và cuối cùng, nếu bạn đang sử dụng Internet Explorer thì hãy đảm bảo rằng bạn đã tắt Hiển thị thông báo lỗi HTTP thân thiện trong cài đặt Nâng cao (mặc dù tôi nghi ngờ bạn đã làm điều đó hoặc đang sử dụng một trình duyệt khác).


2
currentResponse đã được đặt thành Thay thế. Cảm ơn vì tiền hỗ trợ.
Greg B

Đây là một câu trả lời rất hay nhưng nó có thể được cải thiện nếu bao gồm cách khởi động cửa sổ cấu hình ASP.
Michael Potter

13

Trong trường hợp của tôi:

  • Nhật ký sự kiện trống rỗng.
  • web.config không bị hỏng - được xác minh bằng cách sử dụng tương tự trên máy cục bộ / sử dụng inetmgr

Cuối cùng ...

  • Kiểm tra nhật ký IIS cho thấy một yêu cầu như thế này

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

Chìa khóa là:

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

mà với một số googling đã chỉ cho tôi về việc IIS_USRSkhông có quyền đọc vào wwwthư mục


2
Tôi tìm thấy danh sách mã trạng thái ở đây: support.microsoft.com/en-us/help/943891/
mẹo

4

Vấn đề rõ ràng nhất là quyền NTFS không đúng hoặc không có trong thư mục ứng dụng web. Vì vậy, hãy đảm bảo tài khoản phục vụ trang web có quyền. Nếu không có quyền NTFS phù hợp với thư mục web thì sẽ không có vấn đề gì khi bạn đặt trong web.config vì nó sẽ không bao giờ được đọc.

Kiểm tra nhanh có thể là cung cấp cho tất cả mọi người toàn quyền - nếu trang web bắt đầu hoạt động thì bạn biết đó là vấn đề về quyền và sau đó bạn có thể đặt về việc gán quyền thích hợp cho tài khoản phù hợp hơn.


1

Nếu nâng cấp từ IIS6, thì đó có thể là một trong những web.config hoạt động trên 6, nhưng không phải trong IIS 7.5 ... Nhấp đúp chuột vào tất cả các biểu tượng trong IIS cho trang web và bạn có thể gặp lỗi về định dạng (Phần phải ở dưới phần khác ...)


0

Tôi gặp vấn đề tương tự với ứng dụng Azure Web. Trong khi gỡ lỗi cục bộ, các thông báo lỗi (JSON) được trả về từ các cuộc gọi ajax đã được trả lại hoàn toàn cho trình duyệt. Nhưng một khi triển khai lên Ứng dụng web, các thông báo đã bị nuốt và tôi được trả lại một thông báo lỗi 500 mặc định. Vì vậy, tôi phải đặt existingResponsegiá trị PassThroughtrong httpErrorsthẻ web.config một cách rõ ràng .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.