Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
捕获ASP 3.0(经典)上的SQL错误并返回特定的HttpStatus_Sql_Error Handling_Asp Classic - Fatal编程技术网

捕获ASP 3.0(经典)上的SQL错误并返回特定的HttpStatus

捕获ASP 3.0(经典)上的SQL错误并返回特定的HttpStatus,sql,error-handling,asp-classic,Sql,Error Handling,Asp Classic,我正在做一些关于ASP 3.0的工作,但还没能记下来。如果出现语法错误,ASP将正确地中断(并返回500个错误),但是如果我(故意)编写了一个错误的sql查询,然后执行该查询,它将只在HTML上打印返回的sql错误,而不是中断。这就是代码(只是重新编写了sql)。还要注意,这不是函数的一部分。就在代码页上 set cn = server.createobject("ADODB.Connection") cn.open sConn sql= "select thiscolumndoesnotex

我正在做一些关于ASP 3.0的工作,但还没能记下来。如果出现语法错误,ASP将正确地中断(并返回500个错误),但是如果我(故意)编写了一个错误的sql查询,然后执行该查询,它将只在HTML上打印返回的sql错误,而不是中断。这就是代码(只是重新编写了sql)。还要注意,这不是函数的一部分。就在代码页上

set cn = server.createobject("ADODB.Connection")
cn.open sConn

sql= "select thiscolumndoesnotexist from table1 "

set rs01 = server.createobject("ADODB.Recordset")
rs01.Open sql, cn, 0
%>
现在,我确定“On Error Resume Next(错误恢复下一步)”未处于活动状态,因为如果我使用ASP语法断开页面,它将立即断开。所以我试着做一些类似的事情

On Error GoTo ErrorControl

code here..

ErrorControl:
Response.Status "500 You broke it"
Resume NExt
但是,由于错误上的
转到ErrorControl
,页面中断,就在“ErrorControl”开始的地方。好像它不支持命名的错误处理程序

我还尝试在错误恢复下一步设置
,然后设置
var Error=Server.GetLastError()
,但是,似乎没有错误。我想我记得读过这样一篇文章:Server.GetLastError只有在没有向客户机发送输出的情况下才起作用(这是我的情况,因为它是一个正在输出的HTML,在错误发生时,文档已经发送了一半)

有什么想法吗?非常感谢您的帮助。谢谢

好像它不支持命名的错误处理程序

嗯,是的,因为它没有


您需要做的是打开缓冲。在将ASP文件中的任何内容(静态或动态)发送到客户端之前,请在IIS管理器的应用程序级别打开它,或者使用
Response.Buffer=True

我认为服务器端VBscript不支持GOTO语句。这可能对你好安东尼有帮助。谢谢你的回答。正如我所说,我对asp classic不太熟悉,我确实读过一篇文章,其中他们特别提到了命名错误处理(甚至还有一个代码示例)。我手头没有URL,但可以稍后提供。我认为它支持函数,但不支持独立代码?你的建议是打开缓冲,这会让它像我现在的方式工作吗?或者是为了让我能够使用Server.GetLastError()?@silverCORE:
On Error Goto SomeLabel
在VBScript中的任何地方都不受支持,也许您所想到的文章是a)完全错误(发生了),或者b)实际上是关于VBA或VB6的,而VBA或VB6确实支持它。通过打开缓冲,您可以允许脚本引擎完全放弃当前响应输出,并将其替换为确认响应500.100错误的内容。您不必担心Server.GetLastError等。