【问题标题】:return Array from C# to Classic ASP with COM使用 COM 将数组从 C# 返回到 Classic ASP
【发布时间】:2011-09-28 06:40:17
【问题描述】:

我正在尝试使用 com 将数组从 c# 返回到经典 asp。 This post helped me lot,但我还是有问题:

我在c#中有以下方法:

public object[] returnStuff () {
    return new object[] {'1','2','3'};
}

我的经典 ASP:

dim responseArray1

responseArray1 = RegusSoapComponent.returnStuff()

response.write("Type of Array one is " & VarType(responseArray1))
response.write("Type of Array one is " & responseArray1(1))

我的输出是:

response is Type of Array one is 8204

Microsoft VBScript 运行时错误“800a01ca”

变量使用了 VBScript 不支持的自动化类型

无论我做什么,我似乎都无法访问这个变量。

【问题讨论】:

  • 尝试返回新对象[3] {'1','2','3'}; ?
  • @Gage:这在运行时不会产生任何影响。
  • @SLaks,我认为也不会,但这是我看到的他和他发布的示例之间的唯一区别。
  • @IKode “另一方面,Array 函数总是创建一个 Variants-VarType 8204 数组(即 8192 加 12)。”取自此页面brainbell.com/tutors/Visual_Basic/Arrays.htm。因此,您正在创建一系列变体。返回的数组长度是多少?
  • 如果你尝试返回字符串数组怎么办? return new object[] {"1", "2", "3"}; 可能出于某种原因 char 类型导致问题..

标签: c# asp.net com asp-classic


【解决方案1】:

VBScript 喜欢接收包含变体安全数组的变体。所以你需要返回一个包装你的对象数组的对象。例如:

public object returnStuff() {
    return new object[] {'1','2','3'};
}

应该以正确的方式编组。详细版本见a previous answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2018-12-31
    • 2013-08-15
    • 1970-01-01
    • 2016-04-28
    相关资源
    最近更新 更多