gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:21:29 25 4
gpt4 key购买 nike

我正在做一些关于 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

但是随后,页面因 On Error GoTo ErrorControl 而中断,就在“ErrorControl”开始的地方。就好像它不支持命名的错误处理程序一样。

我还尝试设置 On Error Resume Next 然后设置 var error = Server.GetLastError(),但是,看起来好像没有错误。我想我记得读过 Server.GetLastError 只有在没有输出被发送到客户端时才会工作(这是我的情况,因为它是一个 HTML 被输出,并且在错误发生时,一半的文档已经被发送) .

有什么想法吗?任何帮助是极大的赞赏。谢谢。

最佳答案

As if it didn't support a named error handler.

是的,因为它没有。

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

关于sql - 在 ASP 3.0(经典)上捕获 SQL 错误并返回特定的 HttpStatus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com