首页 文章

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

提问于
浏览
0

我在 very infrequently 看到我管理的网站上记录了以下错误:

参数类型错误,超出可接受的范围,或彼此冲突

当我自己访问经典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从此页面中排除机器人 .

问候

帮派

1 回答

  • 2

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

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

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

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

相关问题