Asp classic 未显示asp错误
我已将一个sql数据库从一台服务器移动到一个分离/连接的新服务器 现在我经历了一些奇怪的行为,因为它不工作,但没有显示错误 这是密码Asp classic 未显示asp错误,asp-classic,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")
<%
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停止;然后不显示任何内容,不显示任何错误
我只是不知道该怎么办我怎么会出错呢
谢谢
乔纳森哦,我找到了错误显示的部分答案
在IIS目录配置的调试窗格中,不应选中启用ASP调试…尽管我认为它应该…我认为服务器有一个GetLastError方法,您可以检查该方法以找出在运行任何语句时发生的错误 e、 g.出现错误时,继续下一步 .... 可能导致错误的语句。。。。 errorObject=Server.GetLastError
对于AsError对象,请参考您是否已将浏览器设置为显示友好的http错误?这与您已经确定的内容相结合,是我没有看到错误消息的常见原因
Shahkaplesh还说得对,您可以使用Server.GetLastError获取发生的最后一个错误,但在本例中不需要这样做。执行查询时,不使用Set命令。我不知道为什么它没有向您显示任何内容,但您的代码应该更像这样:
<%
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//")
%>
是的,响应上的括号。Write是可选的。但我就是这样的OCD,它使故障排除变得更容易。实际上并不意味着令人不快,但是的,您确实需要一个集合,因为您正在设置一个对象类型,并且可能希望在某个时候使用返回值,如果这不仅仅是一个测试脚本,它看起来像我 顺便说一句,括号在响应中并不正确。请编写,因为它不返回值。它们只适用于单参数sub,因为可以在表达式周围任意位置放置括号 例如:
您需要放置错误检查代码来找出实际的错误可能是什么。 我建议您更改代码如下:
<%
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//"
%>
我并不是要踢死一匹马,但我正在对一个Oracle数据库做类似的事情,我有两个幻觉问题,我还没有确定根本原因,但有两件事让它们消失了。 1.命名查询中的所有列,并为任何计算出的列命名为sum、count、avg等,这样您的查询将成为
req = "Select count(*) NumRows From tblArticleList"
二,。在对cstr的调用中包装我的查询字符串导致result.EOF标志正确填充,而不是返回空值或null值,从而导致简单的DO WHILE NOT result.EOF某个操作循环创建无限循环,直到web请求超时。例如
response.write "Step 2//"
set RS = conn.Execute(cstr(req))
没什么大不了的,如果你陷入困境,找不到原因,就给你一些提示。不过,请遵循上面的调试建议,这是一个很好的信息 try-req=从TBLARTICLELIST中选择top 2*在打开连接之前尝试强制超时conn.ConnectionTimeout=200所以请编辑并添加要从和迁移到的SQL版本…一个建议!我曾经在IE中为一些页面清空sreen,而源代码实际上有错误消息,所以请尝试查看您正在获取的页面的源代码。显示友好的HTTP错误不会显示任何内容,它只是不会显示任何值得一看的内容。
response.write "Step 2//"
set RS = conn.Execute(cstr(req))