Asp classic 经典ASP脚本中的间歇性ADO记录集对象错误

Asp classic 经典ASP脚本中的间歇性ADO记录集对象错误,asp-classic,ado,Asp Classic,Ado,我很少在我管理的网站上看到以下错误记录: 参数的类型错误,是吗 超出可接受的范围,或处于可接受的范围内 冲突 当我自己访问经典ASP页面时,我无法复制该问题。值得注意的是,用户代理几乎总是: 阿基弗(+);crawler@alexa.com) 该脚本是一个产品搜索页面,它使用相当标准的ASP分页。相关代码如下所示: ... Set rs=Server.CreateObject("ADODB.Recordset") rs.CacheSize = iPageSize rs.PageSize

我很少在我管理的网站上看到以下错误记录:

参数的类型错误,是吗 超出可接受的范围,或处于可接受的范围内 冲突

当我自己访问经典ASP页面时,我无法复制该问题。值得注意的是,用户代理几乎总是:

阿基弗(+);crawler@alexa.com)

该脚本是一个产品搜索页面,它使用相当标准的ASP分页。相关代码如下所示:

...
Set rs=Server.CreateObject("ADODB.Recordset")     
rs.CacheSize = iPageSize
rs.PageSize = iPageSize
rs.Open mySQL, Conntemp, adOpenStatic, adLockReadOnly, adCmdText
...
我相当肯定游标和锁类型是正确的。显然,如果他们错了,我会认为脚本根本不起作用。我能想到的唯一一件事是,当Alexa spider再次访问站点时,记录集对象仍然处于打开状态(连接池中),导致冲突

有人对如何解决这个问题有什么想法吗?这种错误很少发生(每月500000次页面浏览量中出现1次),但如果可能的话,我还是希望确保没有bug。我唯一能想到的解决方法是使用robots.txt将robots从该页面中排除

问候


Junto

在开始将输入放入函数之前,您是否对浏览器中的输入进行了一些检查,您是否认为某个变量会很好,而实际上可能不是

比如说。你的查询字符串是什么样的

如果它是这样的?page=4,并且您将它作为您想要的页面阅读,假设它一切正常,因为它一定是由您的代码生成的。如果我只是输入了它,而没有第4页,会发生什么?我想这更可能是你的问题


可能是Alexa猜测您可能有一大堆页面,它可以从您的查询字符串中索引。ie它可能会看到你总是有像?page=X这样的东西,所以循环遍历它们,以确保它得到所有这些东西,并在出现错误时停止/404?尽管如此,还是把球吐在上面吧。

哦,说到底,这只是一个1:500000的错误,所以不要太担心;)你给了我想要的暗示。我已经检查了所有参数中的意外数据,没有问题。但是,我没有检查没有传递任何参数的情况。我现在有一张支票来防止这种情况。问题解决了。谢谢