日期:2014-05-17  浏览次数:20772 次

关于asp在iis6中调试的问题
我有个简单的asp页面和一个access库,已经在iis6中搭好了,可是发现在调试页面的时候,如果是代码写错了,浏览器可以正常显示错误信息,但如果是sql语句写错了,浏览器就死掉了,页面一直是空白进度条一直在读,ldb文件也一直加锁去不掉了,以前没有这个问题,哪位高手告诉我怎么办呢?

系统是win7 iis6 iis设置中已经启用父路径 打开了服务端和客户端的调试 ie设置中也去掉了友好显示http错误信息

------解决方案--------------------
每个语法错误都会有提示,有些逻辑错误没有错误信息,因为在语法角度上来说没有错,但有些逻辑错误会导致语法的错误
例如 set a=b 
此时如果b只是一个整数,则会报错

在sql语句中 书写错误一般包含 查询语句错误,字段名写错,表名写错等等,这些都会正常报错。
例如字段名写错 ASP报 
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC 驱动程序不支持所需的属性。
/index.asp, line 53

所以你说没有报错 要么就是逻辑错误没导致语法出错,要么就是查看IIS设置有没有设置为将错误发送到浏览器,在检查浏览器中是否勾选的显示友好的HTTP错误信息,如果打勾的话就去掉。另外检查下页面中有没有用错误处理来跳过出错内容 例如
ON ERROR RESUME NEXT
能想到的基本就这些了。


------解决方案--------------------
调试完毕 整体逻辑上没有什么太大问题 都是细节处你没有注意 先上下原始代码,这里把之前的<!-- #include file="conn.asp" -->文件直接写在主体文件中了 就做了这个修改 其他的没有变动
HTML code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
Dim conn
Sub connect
    On Error Resume Next
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db.mdb")
    If Err.Number<>0 Then Response.Write "数据库连接发生错误" : Response.End()
End sub   


connect '链接数据库
%>  
<script language="javascript">
function CheckAll(form){
    for (var i=0;i<form.elements.length;i++){
        var e = form.elements[i];
        if (e.name != 'chkall') e.checked = form.chkall.checked;
    }
}
</script>
<html>
<head>
</head>
<body>
<form name="form1">
 <select name="searchid" id="searchid" onchange="redirect()">
  <option value="0">请选择</option>
<%
Sql = "Select * from jilian where pid=0 order by id desc"
set rs = conn.execute(sql)
do while not rs.eof
%>
  <option value="<%=rs("id") %>"><%=rs("name") %></option>
<%
    rs.movenext
loop
rs.close
set rs=nothing
%>
 </select>&nbsp;&nbsp;&nbsp;
 <select name="type2" id="type2">
  <option value="0">请选择</option>
 </select>
</form>
<script>  
function redirect(){
    var x=document.getElementById("searchid").value;
    var i
    i=0
    var temp=document.form1.type2
<%
set rs2=server.CreateObject("adodb.recordset")
sql2="select * from jilian"
rs2.open sql2,conn,1,3
while not rs2.eof
%>
    cnt=<%=rs2("pid")%>
    if(cnt==x) {
        if(x!=0){
            temp.options[i+1]=new Option('<%=rs2("name") %>','<%=rs2("id")%>')
            i=i+1
        }else{
            temp.remove(i+1);
        }
    }
<%
    rs2.movenext
wend
%>
}
</script>
</body>
</html>