经典ASP脚本中的间歇性ADO Recordset对象错误

时间:2009-06-23 09:33:56

标签: asp-classic ado

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

  

参数是错误的类型,是   超出可接受的范围,或者在   相互冲突

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

  

ia_archiver(+ http://www.alexa.com/site/help/webmasters; crawler@alexa.com)

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

...
Set rs=Server.CreateObject("ADODB.Recordset")     
rs.CacheSize = iPageSize
rs.PageSize = iPageSize
rs.Open mySQL, Conntemp, adOpenStatic, adLockReadOnly, adCmdText
...

我很确定游标和锁类型是否正确。显然如果他们错了,我希望脚本根本不工作。我唯一能想到的是,这是与记录集对象仍在打开(和连接池)有关,而Alexa蜘蛛再次点击该网站,导致冲突。

有没有人对如何解决这个问题有任何想法?错误很少发生(500,000页面浏览量每月1次),但我仍然希望确保在可能的情况下没有错误。我唯一能想到的解决方法是使用robots.txt从此页面中排除机器人。

此致

Junto

1 个答案:

答案 0 :(得分:2)

在开始将其投入函数之前,您是否正在对浏览器的输入进行一些检查,您可能认为变量在可能不存在时会变好吗?

例如。您的查询字符串是什么样的?

如果喜欢这个?page = 4并且你在想要的页面中读到它,因为它必须是从你的代码生成的。如果我只是输入那个并且没有第4页会发生什么?我认为这更可能是你的问题。

可能是Alexa猜测你可能只有你的查询字符串可以索引一大堆页面。即它可能会看到你总是有类似的东西?page = X所以循环通过它们以确保它全部获取它们并在它出现错误/ 404时停止?只是吐了那个球。