Web API创建COM对象时报错,求解原因。

x287634334 2017-03-15 10:01:53
环境:Win10家庭版+VS2015社区版+SQL Server 2012+金蝶KIS专业版
思路:以WebAPI的方式,调用金蝶KIS专业版财务凭证对象,实现将第三方数据保存为金蝶KIS专业版财务凭证。

金蝶KIS专业版财务凭证对象是用VB6开发的标准COM。

WebAPI代码如下:
Public Class TKVO
Dim kisvch As Object
Dim kiscn As Object
Public Sub New()
Dim test As Object = CreateObject("Excel.Application") '这个语句不报错,正常运行
kisvch = CreateObject("KISProfessionalPlugin.Voucher") '创建金蝶凭证对象,报错
kiscn = CreateObject("KISProfessionalPlugin.clsDataBase") '创建金蝶凭证对象,也报错
End Sub
Public ReadOnly Property KVO
'凭证对象
Get
Return kisvch
End Get
End Property
Public ReadOnly Property KVC
'数据连接对象
Get
Return kiscn
End Get
End Property
End Class

进行测试时,报错:System.Exception:"无法创建 ActiveX 组件。"

但是,相同的代码在WinForm下就一切正常。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim kisvch As KISProfessionalPlugin.Voucher = CreateObject("KISProfessionalPlugin.Voucher")
'Dim kiscn As KISProfessionalPlugin.clsDataBase = CreateObject("KISProfessionalPlugin.clsDataBase")
Dim kiscn As Object = CreateObject("KISProfessionalPlugin.clsDataBase")
'kiscn.InitConnection(GenerateConn)
MsgBox("牛逼")
End Sub



我的疑问是:
一、WebAPI中,为什么能正常创建Excel.Application这个对象,创建KISProfessionalPlugin.Voucher和KISProfessionalPlugin.clsDataBase就报错?在网上搜了很久,用google也没有找到相关资料。网上说的两个方法,一个是配置组件的DCOM权限,Excel这个能从DCOM里找到,但是KISProfessional不在DCOM列表里。不能创建金蝶凭证对象,会不会跟这个有关系?也就是WebAPI只能创建COM+和DCOM对象,不能创建普通COM对象?另一个方法是在Web.config里增加管理员用户和密码,试过了,不起作用。
二、同样的创建对象代码,为什么WinForm中正常,WebAPI中就报错?

实在是没辙了,在此请教大家,盼能指点一二,多谢!
...全文
325 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 元老 2017-03-17
  • 打赏
  • 举报
回复
感谢万能的CSDN
x287634334 2017-03-15
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390784404 这个帖子把问题解决了,感谢万能的CSDN!
x287634334 2017-03-15
  • 打赏
  • 举报
回复
刚才写的急,有些情况没说清楚,再补充几点:
1、Win10是64位的;专业版凭证组件DLL是32位的。
2、上述代码我在WebService里测试,和WebAPI报错一模一样。
3、我把项目改为x86平台,测试时页面直接报错。


改回AnyCPU就正常了。

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧