LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【ASP】如何利用GetLastError函数捕捉WEB页面上的500.100错误位置和详细信息

admin
2023年9月26日 17:1 本文热度 673

:【ASP】如何利用GetLastError函数捕捉WEB页面上的500.100错误位置和详细信息

我试图诊断一个网站的问题,似乎是在代码的地方抛出一个错误。从错误日志看来,它是一个SQL语法错误,由错误的SQL代码错误串联导致。我的问题是,我无法重现错误,但客户仍然可以得到它,这可能是由许多查询造成的。所以我的计划是创建我自己的500错误页面来捕捉结果。我想让页面捕获所有会话数据,所有POST和GET数据(我可以这样做),但我也想捕获关于错误的详细信息。当网站允许显示错误时,几乎会在页面上显示的内容。用小箭头指定该行。

有没有办法从自定义错误页面中捕获错误?


参考微软公司官网页面:define a custom 500 error code page,中文页面:http://21420.oa22.cn,当你的程序崩溃时可以给你更多的信息。以下是一些示例代码,它们会针对您的错误构建详细的错误消息说明。

Set objASPError = Server.GetLastError

Dim strProblem

strProblem = "ASPCode: " & Server.HTMLEncode(objASPError.ASPCode) & vbCrLf

strProblem = strProblem & "Number: 0x" & Hex(objASPError.Number) & vbCrLf

strProblem = strProblem & "Source: [" & Server.HTMLEncode(objASPError.Source) & "]" & vbCrLf

strProblem = strProblem & "Category: " & Server.HTMLEncode(objASPError.Category) & vbCrLf

strProblem = strProblem & "File: " & Server.HTMLEncode(objASPError.File) & vbCrLf

strProblem = strProblem & "Line: " & CStr(objASPError.Line) & vbCrLf

strProblem = strProblem & "Column: " & CStr(objASPError.Column) & vbCrLf

strProblem = strProblem & "Description: " & Server.HTMLEncode(objASPError.Description) & vbCrLf

strProblem = strProblem & "ASP Description: " & Server.HTMLEncode(objASPError.ASPDescription) & vbCrLf

strProblem = strProblem & "Server Variables: " & vbCrLf & Server.HTMLEncode(Request.ServerVariables("ALL_HTTP")) & vbCrLf

strProblem = strProblem & "QueryString: " & Server.HTMLEncode(Request.QueryString) & vbCrLf

strProblem = strProblem & "URL: " & Server.HTMLEncode(Request.ServerVariables("URL")) & vbCrLf

strProblem = strProblem & "Content Type: " & Server.HTMLEncode(Request.ServerVariables("CONTENT_TYPE")) & vbCrLf

strProblem = strProblem & "Content Length: " & Server.HTMLEncode(Request.ServerVariables("CONTENT_LENGTH")) & vbCrLf

strProblem = strProblem & "Local Addr: " & Server.HTMLEncode(Request.ServerVariables("LOCAL_ADDR")) & vbCrLf

strProblem = strProblem & "Remote Addr: " & Server.HTMLEncode(Request.ServerVariables("LOCAL_ADDR")) & vbCrLf

strProblem = strProblem & "Time: " & Now & vbCrLf

也可以将错误输出到根目录下一个文本文件中:

<%

'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("/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

%>

特别说明:

GetLastError函数貌似只在IIS6以前的版本中生效,在IIS7中GetLastError函数似乎没有任何可用的信息。其实是在IIS7中,必须按照如下步骤设置后,GetLastError函数才会生效。

打开IIS管理器,找到网站ClickSun-》错误页,双击“错误页”:

双击“错误页”,然后点击右边的“编辑功能设置”:

在以上页面中,错误响应选择:自定义错误页,默认页-》路径换成自己编写的错误捕捉页面(页面核心代码见上面):/error_500.asp,路径类型:执行URL

保存后,双击状态码500:

响应操作改为:在此网站上执行URL,URL地址还是上面自己开发的自定义错误拦截页面(页面核心代码见上面):/error_500.asp,然后确定保存即可生效。

下面是拦截成功界面效果:

当然,设计这个HTTP500错误页面拦截的根本目的就是不想用户或黑客攻击者看到真实的错误代码,但又需要将这些错误信息发送给开发者或网管,所以需要在自定义的错误拦截页面error_500.asp中,将上面的真实错误信息保存到数据库或文本文件中,方便开发人员或网管予以分析解决,给用户或黑客攻击者看到的只需要是一个简单的错误提醒图片即可。


该文章在 2023/9/26 18:33:00 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved