经典ASP - 捕获500个错误

Gre*_*ith 8 iis iis-7 asp-classic

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

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

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

提前致谢

格兰特

Mic*_*yor 14

当出现错误时,您可以从ASP获得好的信息,但不是很好的信息.

但是,您可以在ASP域中定义自定义500错误代码页,以便在程序崩溃时为您提供更多信息.下面是一些示例代码,它们将构建一个关于错误的相当不错的错误消息.

  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
Run Code Online (Sandbox Code Playgroud)

在IIS7上编辑 GetLastError似乎没有任何可用信息.
您可以通过创建500.100并在脚本中指向此问题来解决此问题.
YMMV,请查看这些URL以获取更多信息http://forums.iis.net/t/1150502.aspxhttp://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/


Dio*_*ane 3

通常,您设置“on errorresume next”,然后检查有问题的代码行后面的错误代码“Err.Number”是否为非零值。

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