2011-08-08 36 views
8

Tôi đang cố gắng chẩn đoán sự cố với trang web có vẻ như đang ném lỗi trong mã ở đâu đó. Từ các bản ghi lỗi, nó có vẻ là một lỗi cú pháp SQL gây ra bởi việc ghép nối sai của một truy vấn SQL với mã lỗi. Vấn đề của tôi là, tôi không thể tạo lại lỗi nhưng khách hàng vẫn nhận được lỗi và có thể do một số truy vấn gây ra. Vì vậy, kế hoạch của tôi là tạo trang lỗi 500 của riêng tôi để thu được kết quả.ASP cổ điển - Bắt 500 lỗi

Tôi muốn có trang để thu thập tất cả dữ liệu phiên, tất cả dữ liệu POST và GET (mà tôi có thể làm) nhưng tôi cũng muốn nắm bắt thông tin chi tiết về lỗi. Khá nhiều nội dung sẽ hiển thị trên trang khi trang web cho phép hiển thị lỗi. Với mũi tên nhỏ chỉ định dòng.

Có cách nào để bắt lỗi từ trang lỗi 500 tùy chỉnh không?

Cảm ơn trước

Grant

Trả lời

14

Bạn có thể nhận được tốt, nhưng không thông tin tuyệt vời từ ASP khi bạn có một lỗi.

Nhưng bạn có thể define a custom 500 error code page trong vùng đất ASP có thể cung cấp cho bạn thêm một chút thông tin khi chương trình của bạn gặp sự cố. Dưới đây là một số mã mẫu sẽ xây dựng một thông báo lỗi khá tốt về lỗi của bạn.

Set objASPError = Server.GetLastError 

    Dim strProblem 
    strProblem = "ASPCode: " & Server.HTMLEncode(objASPError.ASPCode) & vbCrLf 
    strProblem = strProblem & "Number: 0x" & Hex(objASPError.Number) & vbCrLf 
    strProblem = strProblem & "Source: [" & Server.HTMLEncode(objASPError.Source) & "]" & vbCrLf 
    strProblem = strProblem & "Category: " & Server.HTMLEncode(objASPError.Category) & vbCrLf 
    strProblem = strProblem & "File: " & Server.HTMLEncode(objASPError.File) & vbCrLf 
    strProblem = strProblem & "Line: " & CStr(objASPError.Line) & vbCrLf 
    strProblem = strProblem & "Column: " & CStr(objASPError.Column) & vbCrLf 
    strProblem = strProblem & "Description: " & Server.HTMLEncode(objASPError.Description) & vbCrLf 
    strProblem = strProblem & "ASP Description: " & Server.HTMLEncode(objASPError.ASPDescription) & vbCrLf 
    strProblem = strProblem & "Server Variables: " & vbCrLf & Server.HTMLEncode(Request.ServerVariables("ALL_HTTP")) & vbCrLf 
    strProblem = strProblem & "QueryString: " & Server.HTMLEncode(Request.QueryString) & vbCrLf 
    strProblem = strProblem & "URL: " & Server.HTMLEncode(Request.ServerVariables("URL")) & vbCrLf 
    strProblem = strProblem & "Content Type: " & Server.HTMLEncode(Request.ServerVariables("CONTENT_TYPE")) & vbCrLf 
    strProblem = strProblem & "Content Length: " & Server.HTMLEncode(Request.ServerVariables("CONTENT_LENGTH")) & vbCrLf 
    strProblem = strProblem & "Local Addr: " & Server.HTMLEncode(Request.ServerVariables("LOCAL_ADDR")) & vbCrLf 
    strProblem = strProblem & "Remote Addr: " & Server.HTMLEncode(Request.ServerVariables("LOCAL_ADDR")) & vbCrLf 
    strProblem = strProblem & "Time: " & Now & vbCrLf 

Sửa On IIS7 GetLastError dường như không có bất kỳ thông tin có sẵn.
Bạn có thể khắc phục sự cố bằng cách tạo 500.100 và trỏ điểm này vào tập lệnh của mình.
YMMV, kiểm tra các URL này để biết thêm thông tin http://forums.iis.net/t/1150502.aspxhttp://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/

+0

Chỉnh sửa từ Eduardo Molteni là một giải pháp tuyệt vời! –

Các vấn đề liên quan