经典ASP - 捕获500个错误

时间:2011-08-08 19:36:18

标签: iis iis-7 asp-classic

我正在尝试诊断某个网站的问题,该网站似乎在某处的代码中引发了错误。从错误日志来看,似乎是SQL语法错误导致SQL查询与错误代码的错误连接。我的问题是,我无法重现错误,但客户仍然得到它,它可能是由许多查询引起的。所以我的计划是创建我自己的500错误页面以捕获结果。

我想让页面捕获所有会话数据,所有POST和GET数据(我可以做),但我也希望捕获有关错误的详细信息。当网站允许显示错误时,几乎会在页面上显示的内容。用小箭头指定行。

有没有办法从自定义500错误页面中捕获错误?

提前致谢

捐赠

2 个答案:

答案 0 :(得分: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,请查看这些网址以获取更多信息http://forums.iis.net/t/1150502.aspxhttp://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/

答案 1 :(得分:3)

通常你设置“on next resume next”,然后在非零值的代码行之后检查错误代码“Err.Number”。

请参阅:http://www.powerasp.com/content/new/on-error-resume-next.asp