【问题标题】:ASP Classic Script Timeout Debug on IIS6?IIS6 上的 ASP 经典脚本超时调试?
【发布时间】:2011-03-09 18:23:41
【问题描述】:

我有一个 ASP Classic 应用程序,由于各种原因,它从 Windows 2000 服务器移到了 Windows 2003 R2 服务器。大多数经典的 ASP 工作正常。问题是,一页总是会向日志返回“脚本超时”,并向用户返回 500 错误。我尝试关闭 CustomErrors,但仍然不知道是哪一行代码导致了错误。谁能提供一些关于如何找到超时线的见解?

【问题讨论】:

  • 检查你的循环,如果有的话,看看它是否以注释可疑代码结束。

标签: asp-classic iis-6


【解决方案1】:

是否检查过 IIS 日志,并检查过它们是否尽可能多地记录?默认情况下,它们位于 Windows 或 WinNT \system32\logs.... IIS 管理器会准确告诉您。

您还可以将一些日志记录添加到文本文件中,或打印到屏幕上,看看这是否有助于您诊断问题。

【讨论】:

  • 我尝试在整个代码中添加一个 Response.Write 和 response.flush 命令,但它似乎没有做任何事情。我得到的只是“脚本超时”,但没有告诉我它在哪里超时。
【解决方案2】:

如果日志没有告诉你任何事情,那么你需要确保 IIS 访问该页面,我会添加

Response.Write ("something")
Response.End

在页面的最顶部,如果它打印了一些东西,那么您就知道问题出在页面上,您需要分析其上的 vb-script 以找到停止的代码。 Response.End 对于这个目的非常有用。

【讨论】:

    【解决方案3】:

    听起来您正进入调试阶段。

    在有问题的页面中,开始删除代码,直到您可以工作为止。最后移除的东西可能是问题所在。

    【讨论】:

      【解决方案4】:

      在 iis 中将值“向浏览器发送错误”设置为 true。然后是完整的错误消息,包括。行号被发送到客户端。 (在 IE 中你必须设置“显示简短的 http 错误为 false”)

      alternativley 将 iis 中的“服务器端调试”设置为 true,并且在您的脚本中(假设您使用的是 vbscirpt)您可以使用 vbscript 的“stop”关键字。

      然后会弹出调试提示

      【讨论】:

        【解决方案5】:

        尝试使用Option Explicit 以获得更清晰的错误 - 这最初可能会导致更多错误,因为您需要正确声明每个变量,但它确实会给出更详细的错误消息。

        我发现的另一件事是脚本超时通常是由脚本进入无限循环引起的 - 所以检查所有循环以确保它们正确退出。

        【讨论】:

          【解决方案6】:

          我使用以下代码,在 ASP 页面中查找错误。

          <%
          dim objASPError
          'Grab the error stuff and quickly release
           Set objASPError = Server.GetLastError
          on error resume next
          strForm     = Request.Form
          strQuery    = Request.QueryString
          TheMessage= "<table border=0 width=90% cellpadding=1 cellspacing=0>"_
          & "<tr><td>"_
          & "<table width=100% cellpadding=5 cellspacing=0 border=0>"_
          & "<tr><td colspan=2>Hi: Admin. Fatal Error occured as follows<br></td></tr>"_
          & "<tr><td>"_
          & "<li><b>Error occured at: " & Now() & " </b></ul>"_
          & "<li><b>Referred from:"&request.ServerVariables("HTTP_REFERER")&" </b></ul>"_
          & "<li><font color=#000000 face=verdana,arial,helvetica size=1><b>Url: " & request.ServerVariables("URL") & " </b></ul>"_
          & "<li><b>Category: " & objASPError.Category & " </b></ul>"_
          & "<li><b>Filename: " & objASPError.File & " </b></ul>"_
          & "<li><b>ASP Code: " & objASPError.ASPCode & " </b></ul>"_
          & "<li><b>Number: " & objASPError.Number & " </b></ul>"_
          & "<li><b>Source: " &objASPError.Source & " </b></ul>"_
          & "<li><b>LineNumber: " &objASPError.Line & " </b></ul>"_
          & "<li><b>Column: " &objASPError.Column & " </b></ul>"_
          & "<li><b>Description: " & objASPError.Description & " </b></ul>"_
          & "<li><b>ASP Description: " & objASPError.ASPDescription & " </b></ul>"_
          & "<li><b>All HTTP: " & Request.ServerVariables("ALL_HTTP")&" </b></ul>"_
          & "<li><b>POST Fields: " & strForm &" </b></ul>"_
          & "<li><b>GET Fields: " & strQuery &" </b></ul>"_
          & "</td></tr></table>"
          Set objASPError = Nothing
          Response.Write TheMessage
          %>
          

          在上面的代码中,除了显示错误消息,您还可以将其发送到您的电子邮件地址或将其作为错误日志存储在您的数据库中。

          如果您使用的是 IIS 7+

          ,您也可以在 web.config 文件中使用此配置
          <?xml version="1.0" encoding="UTF-8"?>
          <configuration>
              <system.webServer>
                  <httpErrors errorMode="Custom">
                          <error statusCode="500" subStatusCode="100" path="/500-100.asp" responseMode="ExecuteURL" />
                  </httpErrors>
              </system.webServer>
          </configuration>
          

          要遵循的步骤:

          1. 创建自定义错误 ASP 文件。将其命名为500-100.asp

          2. 配置您的 IIS 自定义错误页面以调用此页面。您应该将其设置为500.100 errors

          Check this link学习,如何在IIS 7+

          中设置自定义错误页面

          Check this link学习,如何在IIS 6

          中设置自定义错误页面

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-04
            • 2011-10-11
            • 2011-11-09
            • 2011-08-04
            • 1970-01-01
            相关资源
            最近更新 更多