代码之家  ›  专栏  ›  技术社区  ›  Rebecca

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

  •  0
  • Rebecca  · 技术社区  · 16 年前

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

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

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

    IaiAccess(+) 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 Spider再次访问该站点,导致了冲突。

    有人对如何解决这个问题有什么想法吗?这个错误很少发生(每月有50万个页面视图出现1次),但我还是希望尽可能确保没有错误。我唯一能想到的解决方法是使用robots.txt将robots排除在这个页面之外。

    当做

    骏图

    1 回复  |  直到 16 年前
        1
  •  2
  •   Pete Duncanson    16 年前

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

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

    如果是这样?page=4,您将它作为您想要的页面阅读,假设它是所有的好页面,因为它一定是从您的代码中生成的。如果我只是输入了,但没有第4页,会发生什么?我认为这更有可能是你的问题。

    可能是Alexa猜测您可能有一大堆页面可以从您的查询字符串中进行索引。可能会看到你总是有这样的东西?page=x,所以在它们之间循环,以确保它得到了所有的结果,并在出现错误时停止/404?不过,只要往那个上面吐点滚球就行了。