我有一个ASP Classic应用程序,由于各种原因从Windows 2000服务器移动到Windows 2003 R2服务器。大多数经典ASP工作正常。问题是,一个页面将始终向日志返回“脚本超时”,并向用户返回500错误。我尝试关闭CustomErrors,但仍然不知道导致错误的代码行。任何人都可以提供一些有关如何找到超时线的见解吗?
答案 0 :(得分:0)
检查了IIS日志,是否已经检查过他们正在尽可能多地记录?默认情况下,它们位于Windows或WinNT \ system32 \ logs .... IIS管理器将准确地告诉您。
您还可以将一些日志记录添加到文本文件或打印到屏幕,以查看是否有助于您诊断问题。
答案 1 :(得分:0)
如果日志没有告诉你任何事情,那么你需要确保IIS访问该页面,我会添加
Response.Write ("something")
Response.End
在页面的最顶部,如果它打印了一些,那么你知道问题在页面中,你需要分析它上面的vb脚本以找到停止的代码。 Response.End对此非常有用。
答案 2 :(得分:0)
听起来你正处于调试阶段。
在违规页面中,开始删除代码,直到您可以使用某些内容。删除的最后一件事可能是问题。
答案 3 :(得分:0)
将值“将错误发送到浏览器”设置为true。那么完整的错误信息包括。行号被发送到客户端。 (在IE中你必须设置“show short http errors to false”)
alternativley将iis中的“serverside debugging”设置为true并在您的脚本中(假设您使用的是vbscirpt),您可以使用vbscript的“stop”关键字。
然后会弹出一个调试提示
答案 4 :(得分:0)
尝试使用Option Explicit来获得更清晰的错误 - 这可能最初会导致更多错误,因为您需要正确声明每个变量,但它确实会提供更详细的错误消息。
我发现另一件事是脚本超时通常是由脚本进入无限循环引起的 - 所以检查所有循环以确保它们正确退出。
答案 5 :(得分:0)
我使用以下代码来查找 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
%>
在上面的代码中,您可以将其发送到您的电子邮件地址或将其作为错误日志存储在数据库中,而不是显示错误消息。
或者您可以在 web.config 文件中使用此配置,如果您使用的是 IIS 7 +
<?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>
要遵循的步骤:
创建自定义错误ASP文件。将其命名为500-100.asp
配置IIS自定义错误页面以调用此页面。您应该将其设置为500.100 errors
。
Check this link了解如何在 IIS 7 +
中设置自定义错误页面Check this link了解如何在 IIS 6
中设置自定义错误页面