目前,我必须为使用Visual FoxPro创建的现有应用程序创建Web服务。我可以从类库中编译DLL,从DLL生成WSDL,但是使用SoapUi中的wsdl调用这个DLL会给我带来以下错误:
实例化方法 companyadd 的调度对象失败
另外,我无法在OLE / COM Viewer中打开此DLL。它出现以下错误:IClassFactory::CreateInstance failed Unspecified error E_FAIL($800004005)
有人能告诉我如何解释问题的原因吗?
对于从这个应用程序创建的一些DLL,我没有这样的错误。
答案 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服务器。