是否可以在全局级别捕获Classic ASP中的所有500个错误?也许在IIS中的东西。目前我正在使用II6。我喜欢捕获错误消息,然后将其存储在数据库中。我知道它可能在ASPX页面中,但不知道你是如何在传统的asp中做的。经典ASP:捕获错误
谢谢
是否可以在全局级别捕获Classic ASP中的所有500个错误?也许在IIS中的东西。目前我正在使用II6。我喜欢捕获错误消息,然后将其存储在数据库中。我知道它可能在ASPX页面中,但不知道你是如何在传统的asp中做的。经典ASP:捕获错误
谢谢
是,创建一个ASP网页,其中将记录错误的详细信息的数据库,并设置这是在IIS中的500处理器如下页面。
使用Server.GetLastError对象获取处理程序脚本中错误的详细信息。
在500处理程序中登录到文本文件而不是数据库可能是个好主意,以提高永续性。
错误在传统的ASP处理是一个完整的疼痛。您可以使用on error resume next
捕获您认为会发生的错误,然后检查以下代码行中的错误代码。
或者,您可以扫描服务器日志中的500个错误。或在您的IIS设置中设置“500错误”页面。
On Error Resume Next
... do something...
If Err.Number <> 0 Then
... handle error
end if
补充Jon的回答,使用这个脚本错误写入日志文件:
<%
'Set this page up in IIS to receive HTTP 500 errors
''Type' needs to be 'URL' and the URL is e.g.: '/500Error.asp' if this file is named '500Error.asp' and is in the site root directory.
'This script assumes there is a "/Log" folder, and that IIS has write access to it.
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim objFSO, err
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set err = Server.GetLastError()
outFile=Server.MapPath("/Log/ErrorLog.txt")
Set objFile = objFSO.OpenTextFile(outFile, ForAppending, True, TristateTrue)
objFile.WriteLine Now & " - ERROR - ASPCode:" & err.ASPCode & " ASPDescription: " & err.ASPDescription & " Category: " & err.Category & " Description: " & err.Description & " File: " & err.File & " Line: " & err.Line & " Source: " & err.Source & vbCrLf
objFile.Close
Set objFile = Nothing
Set err = Nothing
%>
IIS7有失败的请求跟踪,它报告未处理的经典ASP错误,不知道它是否存在于6.0中。 http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis/ – 2012-02-13 16:32:34