【问题标题】:Intermittent ADO Recordset object error in Classic ASP script经典 ASP 脚本中的间歇性 ADO 记录集对象错误
【发布时间】:2009-06-23 09:33:56
【问题描述】:

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

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

当我自己访问经典的 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 蜘蛛再次访问该站点,导致冲突。

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

问候

君托

【问题讨论】:

    标签: asp-classic ado


    【解决方案1】:

    您是否在开始将浏览器的输入放入函数之前对其进行了一些检查,您是否会假设一个变量会是好的,而实际上它可能不是?

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

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

    可能是 Alexa 猜测您可能有大量页面,它可以仅从您的查询字符串中索引。即它可能会看到你总是有类似 ?page=X 的东西,所以循环遍历它们以确保它得到它们并在出现错误/404 时停止?不过,只是在那个上面吐个球。

    【讨论】:

    • 哦,最终,它只是一个 1:500,000 的错误,所以不要太担心它;)
    • 你给了我我需要的提示。我已经检查了所有参数是否有意外数据,没有问题。但是,我没有检查根本没有传递参数的情况。我现在有一张支票可以防止这种情况发生。问题解决了。谢谢。
    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多