目录
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
对象包含多个属性,可用于 错误分析 和 日志记录。
属性 | 描述 |
---|---|
ASPCode | ASP 错误代码(如 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 错误页面
- 打开 IIS 管理器
- 选择站点,点击 错误页面
- 选择 500 错误,点击 编辑功能设置
- 选择 自定义错误页面,输入
/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. 参考资料
- Microsoft Docs – ASPError 对象
- W3Schools – ASP 错误处理
- IIS 官方文档 – 自定义 ASP 错误页面
7. 出站链接
通过 ASPError 对象,可以 捕获错误、记录日志、自定义错误页面,提高 ASP 应用的 稳定性 和 调试效率!🚀
发表回复