我在尝试访问从VB.NET DLL中作为数组提取的数据时遇到问题。
DLL已正确注册并在为asp经典页面提供服务的Web服务器上工作。
我使用vb6程序测试了dll,它检索了我期望的数据。 这是我用过的代码。
Dim commItems
commItems = c.GetCommTypes
For i = LBound(commItems) To UBound(commItems)
Me.Label2.Caption = "Item: " & commItems(i).CommTypeID & " - " & commItems(i).CommTypeName
DoEvents
Sleep (1000)
Next
我得到的错误信息如下,当尝试做同样的事情是asp clasic
Microsoft VBScript runtime error '800a000d'
Type mismatch
/commtype.asp, line 13
这是我的asp代码
Dim Core
Set Core = Server.Createobject("Advantage.Dealer.Email.CoreClassLibrary.CoreClass")
dim commItems
commItems = Core.GetCommTypes
For i = LBound(commItems) to UBound(commItems)
Response.Write commItems(i).CommTypeID
Next
我不确定我做错了什么,但如果我运行此代码
Dim Core
Set Core = Server.Createobject("Advantage.Dealer.Email.CoreClassLibrary.CoreClass")
dim commItems
commItems = Core.GetCommTypes
For i = LBound(commItems) to UBound(commItems)
Response.Write i
Next
我得到了
0123
所以有些东西在起作用,但不是我想要它。
请注意,它应该返回4行数据
答案 0 :(得分:0)
我会通过Core.GetCommTypes()方法查看数组中返回的类型的COM接口。
< InsiderKnowledge>
Advantage.Dealer.Email.ModelClassLibrary.CommType类似乎没有声明COM接口。
这与您的VB6客户端无法成功使用其属性相符。您是否在对它们执行VB6和VB脚本测试之间修改了程序集/程序集?
< / InsiderKnowledge>
答案 1 :(得分:0)
好的,经过几个小时的搜索,我找到了我想要的解决方案。
我在这里找到了答案 http://bytes.com/topic/asp-classic/answers/167046-type-mismatch-error-when-accessing-array
就在帖子的底部。
基本上我传递的是我的类类型的数组,而我应该做的是返回一个System.Object类型的数组。我对.net DLL进行了一些更改,以便返回一个CommType类的数组,而不是返回一个System.Object数组