无法实例化使用Visual FoxPro创建的DLL

时间:2016-07-15 13:09:22

标签: soap dll wsdl visual-foxpro

目前,我必须为使用Visual FoxPro创建的现有应用程序创建Web服务。我可以从类库中编译DLL,从DLL生成WSDL,但是使用SoapUi中的wsdl调用这个DLL会给我带来以下错误:

  

实例化方法 companyadd 的调度对象失败

另外,我无法在OLE / COM Viewer中打开此DLL。它出现以下错误:IClassFactory::CreateInstance failed Unspecified error E_FAIL($800004005)

有人能告诉我如何解释问题的原因吗?

对于从这个应用程序创建的一些DLL,我没有这样的错误。

1 个答案:

答案 0 :(得分:0)

当我不得不在VFP中构建OLE / COM服务器时,大多数时候它最终都是权限。即使是构建,您也必须启动VFP“以管理员身份运行”,以便将条目写入Windows注册表。

然后出现错误800004005.这也是基于权限(根据我的经验)。为此,我必须始终从Windows进入COM服务器配置。

从记住32/64位,您需要以32位模式显式运行DCOM配置。为此,从DOS命令窗口,执行

MMC comexp.msc /32

这告诉DCOM配置显示基于32位的COM服务器(VFP仅在32位模式下运行)

然后,展开控制台根目录的树视图控制器 - >组件服务 - >计算机 - >我的电脑 - > DCOM配置。然后向下滚动到您的应用程序。如果列表中未引用/显示类名,则可能需要使用GUID。右键单击它并选择属性。在“标识”选项卡上,您可以标识用于访问COM对象的帐户。仅用于测试和确认,将用户帐户设置为和管理员级别帐户并尝试。确认后,您知道它是否是权限访问权限。然后删除admin并添加另一个较低级别的用户帐户。当它失败时,您需要确保“用户”对您的流程可能正在使用的任何路径具有足够的权限。

希望这会有所帮助,但同样,大部分内容都来自多年前使用VFP进行COM服务器。