【问题标题】:Classic ASP - Catching 500 Errors经典 ASP - 捕获 500 错误
【发布时间】:2011-08-08 19:36:17
【问题描述】:

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

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

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

提前致谢

授予

【问题讨论】:

    标签: iis iis-7 asp-classic


    【解决方案1】:

    当您遇到错误时,您可以从 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/

    【讨论】:

      【解决方案2】:

      一般你设置“on error resume next”,然后在有问题的代码行之后检查错误代码“Err.Number”是否有非零值。

      见:http://www.powerasp.com/content/new/on-error-resume-next.asp

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多