ASPError对象与asp自定义错误处理页面

时间:2023-01-01 18:35:33

本文为Microsoft官方文档。描述如何在asp中使用Error对象以及使用自定义的错误页面。

概要
本分步指南演示如何使用新的 ASPError 对象创建自定义的、集中的错误处理页。 例如,当发生错误并且系统中的某个进程尚未完成时,应用程序可能要求向某人发送电子邮件通知。 或者,您可能希望将 Internet Information Server (IIS) 错误日志信息以外的某些信息记录到数据库中。

先决条件
• Microsoft Windows 2000 Professional, Windows 2000 Server, or Windows 2000 Advanced Server
• 已安装和配置了 Internet Information Server 5.0 (或者以上
http://www.aspxuexi.com/)
使用 ASPError 对象所需的 ASPError 对象及相关 Active Server Pages (ASP) 方法是 Active Server Pages 3.0 (ASP) 中的新增功能,在 Windows 2000 以前的操作系统中没有这些功能。

新建 SubWeb
1. 右键单击开始,然后单击资源管理器以打开 Windows 资源管理器。
2. 选择 Web 站点的根文件夹(默认情况下为 C:\InetPub\Wwwroot)。
3. 在文件菜单上,指向新建,然后单击文件夹。 将该文件夹命名为 ErrTest。
4. 右键单击 ErrTest,然后单击属性。
5. 在安全选项卡上,单击 Everyone。 在权限下,确保已选中读取和写入复选框。 其他复选框保持不变。 如果进行了任何更改,请单击应用。
6. 从 Windows 开始菜单,指向程序,指向管理工具,然后单击 Internet 服务管理器以打开 Internet 服务管理器 (ISM)。
7. 在“默认 Web 站点”下,应看到 ErrTest 目录。右键单击 ErrTest,然后单击属性。
8. 确认已按以下方式启用了匿名访问:

 • 在目录安全性选项卡上,在匿名访问和验证控制下,单击编辑。
• 选中匿名访问复选框,单击确定,然后单击应用。

9. 若要将该目录标记为 ASP 应用程序,请在目录选项卡上,单击应用程序设置下的创建。 单击应用以保存所作的更改,然后单击确定关闭 ErrTest 属性对话框。

 
创建自定义错误处理 ASP 页
1. 在 Windows 开始菜单中,指向程序,指向附件,然后单击记事本。
2. 将下列代码粘贴到“记事本”中以创建示例 ASP 错误处理程序页:

 

< %@Language = " VBSCRIPT " % >  
<
Option   Explicit  
On   Error   Resume   Next  
Response.Clear 
Dim  objError 
Set  objError  =  Server.GetLastError() 
%
>  
< html >  
< head >  
< title > ASP  500   Error </ title >  
< style >  
BODY { FONT
- FAMILY: Arial; FONT - SIZE: 10pt; 
BACKGROUND: #ffffff; COLOR: #
000000
MARGIN: 15px; } 
H2 { FONT
- SIZE: 16pt; COLOR: #ff0000; } 
TABLE { BACKGROUND: #
000000 ; PADDING: 5px; } 
TH { BACKGROUND: #0000ff; COLOR: #ffffff; } 
TR { BACKGROUND: #cccccc; COLOR: #
000000 ; } 
</ style >  
</ head >  
< body >  

< h2 align = " center " > ASP  500   Error </ h2 >  

< p align = " center " > An  error  occurred processing the page you requested. < br >  
Please see the details below 
for  more information. </ p >  

< div align = " center " >< center >  

< table >  
< If   Len ( CStr (objError.ASPCode))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > IIS  Error  Number </ th >  
< td align = " left "  valign = " top " >< % = objError.ASPCode% ></ td >  
</ tr >  
< End   If  % >  
< If   Len ( CStr (objError.Number))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > COM  Error  Number </ th >  
< td align = " left "  valign = " top " >< % = objError.Number% >  
< % = "  (0x "   &   Hex (objError.Number)  &   " ) " % ></ td >  
</ tr >  
< End   If  % >  
< If   Len ( CStr (objError.Source))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > Error  Source </ th >  
< td align = " left "  valign = " top " >< % = objError.Source% ></ td >  
</ tr >  
< End   If  % >  
< If   Len ( CStr (objError.File))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > File Name </ th >  
< td align = " left "  valign = " top " >< % = objError.File% ></ td >  
</ tr >  
< End   If  % >  
< If   Len ( CStr (objError.Line))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > Line Number </ th >  
< td align = " left "  valign = " top " >< % = objError.Line% ></ td >  
</ tr >  
< End   If  % >  
< If   Len ( CStr (objError.Description))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > Brief Description </ th >  
< td align = " left "  valign = " top " >< % = objError.Description% ></ td >  
</ tr >  
< End   If  % >  
< If   Len ( CStr (objError.ASPDescription))  >   0   Then  % >  
< tr >  
< th nowrap align = " left "  valign = " top " > Full Description </ th >  
< td align = " left "  valign = " top " >< % = objError.ASPDescription% ></ td >  
</ tr >  
< End   If  % >  
</ table >  

</ center ></ div >  

</ body >  
</ html >
3. 在文件菜单上,单击保存。 在出现提示时,将该页命名为 My500ErrHandler.asp,然后将该页保存到以前创建的 ErrTest 文件夹中。

将新页设置为 500 种错误的错误处理程序
1. 在开始菜单上,指向程序,指向管理工具,然后单击 Internet 服务管理器。
2. 右键单击“默认 Web 站点”下的 ErrTest 虚拟目录,然后单击属性。
3. 在自定义错误信息选项卡上,滚动到“HTTP 错误”列中一个包含“500;100”的项。 可以在其中更改设置,以指向自定义错误处理程序。
4. 选择作为 500;100 错误当前定义的行,然后单击编辑属性。
5. 在消息类型下拉列表框中,单击 URL。
6. 请注意,在 URL 文本框中,URL 默认指向位于“/iisHelp/common/500-100.asp”的页。 这是系统上的默认错误处理页,如果未定义自定义处理程序,则通常由它处理 ASP 错误。 请注意,可以在文本编辑器中打开该页以查看它的错误处理方法。
7. 若要启用自定义处理程序,请键入到 ASP 页的虚拟路径。 例如,如果 ErrTest 虚拟目录就在服务器上根 Web 站点的下方,则键入以下路径:
/ErrTest/My500ErrHandler.asp
8. 单击确定两次,关闭这些对话框并设置自定义错误处理程序。
测试自定义错误处理程序
测试 1:运行时错误
下页演示一个运行时错误,当您执行无法完成的操作(如被零除)时就会出现这种错误: 1. 单击开始,指向程序,指向附件,然后单击记事本。
2. 粘贴以下代码:

2. 粘贴以下代码:
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 1</title>
</head>
<body>
<% Response.Write 1/0 %>
</body>
</html>

3. 在文件菜单上,单击保存。 出现提示时,将该页命名为 BadPage1.asp,然后将该页保存到以前创建的 ErrTest 文件夹中。
4. 在 Web 浏览器中,在地址栏中键入以下 URL 以浏览到该页:
http://<您的服务器名 >/ErrTest/BadPage1.asp

测试 2:代码中无效的方法
下页演示当代码调用的方法不存在或者内部 ASP 对象引用中的方法有拼写错误时发生什么情况: 1. 在开始菜单中,指向程序,指向附件,然后单击记事本。
2. 粘贴以下代码:
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 2</title>
</head>
<body>
<% Response.BadMethod "Hello" %>
</body>
</html>

 

3. 在文件菜单上,单击保存。 出现提示时,将该页命名为 BadPage2.asp,然后将该页保存到以前创建的 ErrTest 文件夹中。
4. 在 Web 浏览器中,在地址栏中键入以下 URL 以浏览到该页:
http://<您的服务器名 >/ErrTest/BadPage2.asp

测试 3:未注册的对象
下页演示创建未在服务器上注册的外部对象时出现的错误: 1. 在开始菜单中,指向程序,指向附件,然后单击记事本。
2. 粘贴以下代码:
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 3</title>
</head>
<body>
<%
Dim objBad
Set objBad = Server.CreateObject("BAD.OBJECT.CLASS")
%>
</body>
</html>

3. 在文件菜单上,单击保存。 出现提示时,将该页命名为 BadPage3.asp,然后将该页保存到以前创建的 ErrTest 文件夹中。
4. 在 Web 浏览器中,在地址栏中键入以下 URL 以浏览到该页:
http://<您的服务器名 >/ErrTest/BadPage3.asp
疑难解答
• 在创建自定义错误处理程序时,应了解其他两个 ASP 概念: Server.Transfer 方法和 Server.GetLastError 方法。 Server.Transfer 方法将执行传送到在应用程序中定义的错误处理页。 因为 Server.Transfer 自动发生,所以通常不必对它进行处理。 Server.GetLastError 方法用于返回错误处理页中的 ASPError 对象。 并不要求您一定使用这种方法,在前面的示例错误处理页中包含这种方法。 有关这两种方法的更多信息,请参见“参考”一节。
• 无论出现错误的页是用 JScript 还是用 VBScript 编写的,内置的错误处理程序都可以处理这些错误;但是,本文中的基本示例只返回有关 VBScript 页错误的有用信息。 如果页是用 Jscript 编写的,则可能需要创建针对 Jscript 的错误处理程序;或者,如果需要用错误处理程序处理任何类型页的错误,请查看默认错误处理页使用的方法。
• Microsoft Internet Explorer 5 或更高版本包含一个可重写标准 HTTP Web 服务器错误信息的设置,这可能会导致浏览器出现异常情况。 若要关闭该功能,在浏览器中的工具菜单上,单击 Internet 选项。 在高级选项卡上,清除“显示友好 HTTP 错误信息”复选框。
• 还要切记,仍然可以使用内联错误处理,内联错误处理将重写集中错误处理程序。 若要演示此操作,请在“记事本”中打开 BadPage1.asp,粘贴下列修改后的代码(它增加了一个内联错误处理程序):
<%@Language="VBSCRIPT"%>
<html>
<head>
<title>Bad Page 1</title>
</head>
<body>
<%

On error resume next

Response.Write 1/0

if err.number <> 0 then
Response.Write err.description & "<BR>" & err.source & "<BR>"
err.clear
end if

%>
</body>
</html>
保存这些更改,并在 Web 浏览器中浏览到该文件。 请注意,内联错误处理程序重写所创建的集中错误处理程序。

轉自:http://www.aspxuexi.com/aspbasic/error/2007-11-5/ASPError.htm