没有显示asp错误

时间:2009-02-07 21:30:25

标签: asp-classic

我已将sql数据库从一台服务器移动到一台服务器(分离/附加)

现在我遇到一些奇怪的行为,因为它不起作用,但是没有显示错误。

这是代码

<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626\SQLLOP;DATABASE=Lop;Uid=admin-sql;Pwd=xxxx;" 

response.write "Step 0//"

set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")

conn.Open database_dsn

response.write "Step 1//"
req = "Select count(*) From tblArticleList"

response.write "Step 2//"
set RS = conn.Execute(req)

response.write  "Step 3//"

%>

程序在步骤2停止;什么都没有,没有显示错误...

我只是不知道该怎么做。我怎么会得到一些错误?

由于 乔纳森

7 个答案:

答案 0 :(得分:1)

哦,我部分找到了错误显示的答案。

在IIS目录配置的“调试”窗格中,不应该检查启用ASP调试...虽然我认为它应该...

答案 1 :(得分:1)

您是否已将浏览器设置为“显示友好的http错误”,这与您已识别的内容一起是我没有看到错误消息的常见原因。

Shahkaplesh也是对的,您可以使用Server.GetLastError()来获取发生的最后一个错误,但在此示例中您不需要这样做。

答案 2 :(得分:1)

执行查询时,不要使用“设置”命令。我不知道为什么它没有向你显示任何内容,但你的代码看起来应该更像这样:

<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626\SQLLOP;DATABASE=Lop;Uid=admin-sql;Pwd=xxxx;" 

response.write("Step 0//")

set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")

conn.Open database_dsn

response.write("Step 1//")
req = "Select count(*) From tblArticleList"

response.write("Step 2//")
RS = conn.Execute(req)

response.write("Step 3//")
%>

是的,“Response.Write”上的括号是可选的。但我就是这样的OCD,它使故障排除更容易。

答案 3 :(得分:1)

您需要放置错误检查代码以找出实际错误可能是什么。 我建议您改变代码:

<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626\SQLLOP;DATABASE=Lop;Uid=admin- sql;Pwd=xxxx;"

'Its very important to add this line!!! '
On Error Resume Next
'Its very important to add this line!!! '

response.write "Step 0//"

set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")

conn.Open database_dsn

if err.number<>0 then
    response.write err.description
end if

response.write "Step 1//"
req = "Select count(*) From tblArticleList"

response.write "Step 2//"
set RS = conn.Execute(req)

if err.number<>0 then
    response.write err.description
end if

response.write  "Step 3//"

%>

答案 4 :(得分:1)

不要踢死马,但是我在Oracle数据库上做了类似的事情,而且我还有两个幻象问题,我还没有确定根本原因,但这里有两件事他们走了。
1.将查询和别名中的所有列命名为计算的任何列(总和,计数,平均等)。因此,您的查询将成为

req = "Select count(*) NumRows From tblArticleList"

2。在对cstr的调用中包装我的查询字符串会导致result.EOF标志被正确填充而不是返回一个空值或空值导致一个简单的DO WHILE NOT result.EOF一些Action LOOP创建一个无限循环,直到web请求时间到。例如,

response.write "Step 2//"
set RS = conn.Execute(cstr(req))

如果你遇到困难并且找不到原因,那么只有几个提示没什么大不了的。按照上面的调试建议,这是一个很好的信息。

答案 5 :(得分:0)

我认为Server有一个GetLastError方法,您可以检查该方法以查找运行任何语句时发生的错误。

e.g。接下来错误恢复 ....可能导致错误的陈述.... errorObject = Server.GetLastError()

对于ASPError对象,请参阅http://www.w3schools.com/asp/asp_ref_error.asp

答案 6 :(得分:0)

实际上并不意味着不愉快,但是你确实需要一个Set,因为你正在设置一个对象类型,并且可能想要在某个时候使用返回值(如果这不仅仅是一个测试脚本,它看起来像我。)

另外btw括号在Response.Write()中并不正确,因为它不返回值。它们只适用于单个参数subs,因为您可以将括号放在表达式的任何位置。

例如:

 a = (b)
 Response.Write ((("test"))&(1))