目录

  1. ASPError 对象简介
  2. 获取 ASPError 对象
  3. ASPError 对象的属性
  4. 使用 ASPError 处理错误
  5. 完整示例代码
  6. 参考资料
  7. 出站链接

1. ASPError 对象简介

ASPError 对象用于获取 ASP 运行时错误 的详细信息。通常用于 调试自定义错误页面

📌 特点

  • 仅适用于 IIS 5.0 及以上版本
  • 只能通过 Server.GetLastError() 获取
  • 适用于 自定义错误处理页面

2. 获取 ASPError 对象

📌 通过 Server.GetLastError() 方法获取 ASPError 对象,仅在 自定义错误页面(如 500 错误页)中可用。

示例:获取错误对象

<%
Dim objError
Set objError = Server.GetLastError()
Response.Write "错误描述:" & objError.Description
%>

📌 注意

  • 只有在 ASP 自定义错误页面(如 500-100.asp)中,Server.GetLastError() 才可用。
  • 在普通页面,Server.GetLastError() 返回 Nothing

3. ASPError 对象的属性

📌 ASPError 对象包含多个属性,可用于 错误分析日志记录

属性描述
ASPCodeASP 错误代码(如 ASP 0251 : 80004005
Number标准 COM 错误代码
Category错误类别(如 Microsoft VBScript 运行时错误
File发生错误的 ASP 文件路径
Line发生错误的行号
Column发生错误的列号(IIS 7.0 及以上支持)
Source触发错误的代码行
Description错误的文本描述
NativeError服务器返回的错误代码(适用于数据库等)

示例:获取详细错误信息

<%
Dim objError
Set objError = Server.GetLastError()

Response.Write "<h2>ASP 错误信息</h2>"
Response.Write "ASPCode:" & objError.ASPCode & "<br>"
Response.Write "错误号:" & objError.Number & "<br>"
Response.Write "错误类别:" & objError.Category & "<br>"
Response.Write "文件:" & objError.File & "<br>"
Response.Write "行号:" & objError.Line & "<br>"
Response.Write "错误描述:" & objError.Description & "<br>"
Response.Write "源代码:" & Server.HTMLEncode(objError.Source) & "<br>"
%>


4. 使用 ASPError 处理错误

📌 方法 1:在 Global.asa 中定义错误处理
可以在 Global.asa 里重定向 500 错误到 自定义错误页面(如 500-100.asp)。

Global.asa 配置

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
    Application("ErrorPage") = "/500-100.asp"
End Sub
</SCRIPT>

IIS 配置自定义 500 错误页面

  1. 打开 IIS 管理器
  2. 选择站点,点击 错误页面
  3. 选择 500 错误,点击 编辑功能设置
  4. 选择 自定义错误页面,输入 /500-100.asp

📌 方法 2:直接在 ASP 页面捕获错误
在 ASP 页面中,可以使用 On Error Resume Next 结合 Server.GetLastError() 捕获错误。

示例:错误捕获

<%
On Error Resume Next

' 故意引发错误
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Invalid;Data Source=Unknown"

If Err.Number <> 0 Then
    Dim objError
    Set objError = Server.GetLastError()
    
    Response.Write "<h2>错误信息</h2>"
    Response.Write "错误描述:" & objError.Description & "<br>"
    Response.Write "错误行号:" & objError.Line & "<br>"
    
    ' 记录日志
    ' 可将 objError.Description 记录到数据库或日志文件
End If

On Error GoTo 0
%>


5. 完整示例代码

📌 这个示例演示如何在 500-100.asp 里捕获错误,并显示详细错误信息。

错误处理页面(500-100.asp)

<%
Dim objError
Set objError = Server.GetLastError()

Response.Write "<h2>ASP 运行时错误</h2>"
Response.Write "<p><strong>错误描述:</strong>" & objError.Description & "</p>"
Response.Write "<p><strong>错误代码:</strong>" & objError.ASPCode & "</p>"
Response.Write "<p><strong>文件:</strong>" & objError.File & "</p>"
Response.Write "<p><strong>行号:</strong>" & objError.Line & "</p>"

' 记录错误到日志(示例)
Dim objFSO, objLog
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objLog = objFSO.OpenTextFile(Server.MapPath("error_log.txt"), 8, True)
objLog.WriteLine Now() & " - " & objError.Description & " in " & objError.File & " at line " & objError.Line
objLog.Close
Set objLog = Nothing
Set objFSO = Nothing

' 提供返回链接
Response.Write "<p><a href='index.asp'>返回首页</a></p>"
%>

📌 功能

  • 获取并显示错误信息
  • 记录错误到 error_log.txt
  • 提供返回首页链接

6. 参考资料


7. 出站链接


通过 ASPError 对象,可以 捕获错误、记录日志、自定义错误页面,提高 ASP 应用的 稳定性调试效率!🚀