2011-08-08 80 views
8

我試圖診斷一個網站的問題,似乎是在代碼的地方拋出一個錯誤。從錯誤日誌看來,它是一個SQL語法錯誤,由錯誤的SQL代碼錯誤串聯導致。我的問題是,我無法重現錯誤,但客戶仍然可以得到它,這可能是由許多查詢造成的。所以我的計劃是創建我自己的500錯誤頁面來捕捉結果。經典ASP - 捕捉500錯誤

我想讓頁面捕獲所有會話數據,所有POST和GET數據(我可以這樣做),但我也想捕獲關於錯誤的詳細信息。當網站允許顯示錯誤時,幾乎會在頁面上顯示的內容。用小箭頭指定該行。

有沒有辦法從自定義錯誤頁面中捕獲錯誤?

在此先感謝

格蘭特

回答

14

你可以得到不錯的,但不能從ASP偉大的信息,當你有一個錯誤。

但是你可以在ASP土地define a custom 500 error code page,當你的程序崩潰時可以給你更多的信息。以下是一些示例代碼,它們會針對您的錯誤構建相當體面的錯誤消息。

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 

編輯在IIS7 GetLastError函數似乎沒有任何可用的信息。
您可以通過創建500.100來解決該問題,並在腳本中指出該問題。
YMMV,查看這些URL以獲取更多信息http://forums.iis.net/t/1150502.aspxhttp://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/

+0

Eduardo Molteni的編輯是一個很好的解決方法! –