Asp classic Microsoft VBScript运行时错误';800a0009';ASP

Asp classic Microsoft VBScript运行时错误';800a0009';ASP,asp-classic,vbscript,runtime-error,Asp Classic,Vbscript,Runtime Error,我需要你的帮助。在我的经典ASP应用程序中添加购物车中的项目时发生此错误(不总是) 这是文件第56-86行的代码 if IsEmpty(Session("arrcarrito")) then 'Create shopping cart Dim arrcarrito() Redim arrcarrito(6, 1) arrcarrito (0, 0) = idprod arrcarrito (1, 0) = color arrcarrito (2, 0) = talla arrcarrito (3

我需要你的帮助。在我的经典ASP应用程序中添加购物车中的项目时发生此错误(不总是)

这是文件第56-86行的代码

if IsEmpty(Session("arrcarrito")) then
'Create shopping cart
Dim arrcarrito()
Redim arrcarrito(6, 1)
arrcarrito (0, 0) = idprod
arrcarrito (1, 0) = color
arrcarrito (2, 0) = talla
arrcarrito (3, 0) = cantidad
arrcarrito (4, 0) = precio
arrcarrito (5, 0) = peso
Session("arrcarrito") = arrcarrito
Else
'Add items to shopping cart
arrcarrito = Session("arrcarrito")
tamano_arr = Ubound(arrcarrito, 2)
Redim Preserve arrcarrito (6, tamano_arr + 1)   <- line 71
arrcarrito (0, tamano_arr) = idprod
arrcarrito (1, tamano_arr) = color
arrcarrito (2, tamano_arr) = talla
arrcarrito (3, tamano_arr) = cantidad
arrcarrito (4, tamano_arr) = precio
arrcarrito (5, tamano_arr) = peso
Session("arrcarrito") = arrcarrito
end if
arrcart = Session("arrcarrito")
l = 0
r = UBound(arrcart,2) - 1
s = UBound(arrcart,1)
Call QuickSort(arrcart, l, r, 1, s)
Session("arrcarrito") = arrcart
如果是空的(会话(“arrcarrito”)),那么
'创建购物车
Dim Arrcarito()
雷迪姆·阿卡里托(6,1)
arrcarrito(0,0)=idprod
arrcarrito(1,0)=颜色
阿卡里托(2,0)=塔拉
阿卡里托(3,0)=康蒂达
arrcarrito(4,0)=precio
阿卡里托(5,0)=比索
会话(“arrcarito”)=arrcarito
其他的
'将项目添加到购物车
arrcarrito=会话(“arrcarrito”)
tamano_arr=Ubound(Arrcarito,2)

Redim Preserve arrcarrito(6,tamano_arr+1)当最后一个维度值小于0或任何其他维度值与首次创建数组时使用的原始值不同时,此错误发生在
Redim Preserve

我认为您的代码失败的唯一原因是其他页面篡改了会话值,因此返回的数组不是您所期望的


也许写另一页时更好地理解了数组的工作原理,因此在第一个维度中使用了5的UBound,因为第六个条目没有被使用?

在我的机器上工作。从代码来看,您似乎误解了数组边界的工作方式。在VBScript中,此
Redim arr(1,1)
创建一个2 x 2数组,其中两个维度的LBound为0,UBound为1。这种方法不同于通常定义长度的其他语言。也许,如果您使用这些知识调整代码,问题可能会消失。也就是说,我看不到您的代码在您指示的点失败,并且测试它的一个版本,我无法重现问题。您还可以找出
tamano_arr
结束时的值。快速排序的代码是什么?它可能会改变阵列,使其成为其他东西。错误是客户需要很长时间才能完成订单,在我的服务器上,我有300分钟的时间来进行会话IIS购买,我认为这是不够的。当脚本查找变量时,该变量不再存在,并生成错误。我是对的?“你认为有可能解决这个问题的方法吗?”阿尔瓦罗斯:我看不到会话过期会导致这个错误。如果会话已过期,您包含的代码将不会到达第71行。我认为var arrcarrito不存在,因为客户需要很长的延迟才能完成项目的添加。。可能吗?@Alvarons:不可能。如果变量不存在,则会出现类型不匹配错误。我的最后一个想法是var arrcarito为空。。。也许是这样吧?
if IsEmpty(Session("arrcarrito")) then
'Create shopping cart
Dim arrcarrito()
Redim arrcarrito(6, 1)
arrcarrito (0, 0) = idprod
arrcarrito (1, 0) = color
arrcarrito (2, 0) = talla
arrcarrito (3, 0) = cantidad
arrcarrito (4, 0) = precio
arrcarrito (5, 0) = peso
Session("arrcarrito") = arrcarrito
Else
'Add items to shopping cart
arrcarrito = Session("arrcarrito")
tamano_arr = Ubound(arrcarrito, 2)
Redim Preserve arrcarrito (6, tamano_arr + 1)   <- line 71
arrcarrito (0, tamano_arr) = idprod
arrcarrito (1, tamano_arr) = color
arrcarrito (2, tamano_arr) = talla
arrcarrito (3, tamano_arr) = cantidad
arrcarrito (4, tamano_arr) = precio
arrcarrito (5, tamano_arr) = peso
Session("arrcarrito") = arrcarrito
end if
arrcart = Session("arrcarrito")
l = 0
r = UBound(arrcart,2) - 1
s = UBound(arrcart,1)
Call QuickSort(arrcart, l, r, 1, s)
Session("arrcarrito") = arrcart