无法实例化使用 Visual FoxPro 创建的 DLL
Can't instantiate DLL created with Visual FoxPro
目前我必须为使用 Visual FoxPro 创建的现有应用程序创建 Web 服务。我可以从 class 库编译 DLL,从 DLL 生成 WSDL,但是使用来自 SoapUi 的 wsdl 调用这个 DLL 会给我以下错误:
Instantiating the dispatch object for method companyadd failed
此外,我无法在 OLE/COM 查看器中打开此 DLL。它给出以下错误:IClassFactory::CreateInstance failed Unspecified error E_FAIL(0004005)
有人可以告诉我如何阐明问题的原因吗?
对于从此应用程序创建的某些 DLL,我没有出现此类错误。
当我不得不在 VFP 中构建 OLE/COM 服务器时,大多数时候它最终都是权限问题。即使是构建,您也必须启动 VFP "Run as Administrator" 以便它可以将条目写入 Windows 注册表。
然后出现错误 800004005。这也是基于权限(根据我的经验)。为此,我必须始终从 Windows 进入 COM 服务器配置。
从记住 32/64 位开始,您需要在 32 位模式下显式 运行 DCOM 配置。为此,从 DOS 命令 window,执行
MMC comexp.msc /32
这告诉 DCOM 配置显示基于 32 位的 COM 服务器(VFP 仅 运行s 在 32 位模式下)
然后,展开 Console Root -> Component Services -> Computers -> My Computer -> DCOM Config 的树视图控制器。然后向下滚动到您的应用程序。如果列表中未引用/显示 class 名称,您可能需要使用 GUID。右键单击它和 select 属性。在 "Identity" 选项卡上,您可以确定用于访问 COM 对象的帐户。只是为了测试和确认,将用户帐户设置为管理员级别帐户并尝试。一旦确认,您就知道它是否是权限访问。然后去掉admin,再放一个低级别的用户账号。当它失败时,您需要确保 "user" 对您的进程可能正在使用的任何路径具有足够的权限。
希望这会有所帮助,但同样,其中大部分是几年前用 VFP 做 COM 服务器的。
目前我必须为使用 Visual FoxPro 创建的现有应用程序创建 Web 服务。我可以从 class 库编译 DLL,从 DLL 生成 WSDL,但是使用来自 SoapUi 的 wsdl 调用这个 DLL 会给我以下错误:
Instantiating the dispatch object for method companyadd failed
此外,我无法在 OLE/COM 查看器中打开此 DLL。它给出以下错误:IClassFactory::CreateInstance failed Unspecified error E_FAIL(0004005)
有人可以告诉我如何阐明问题的原因吗?
对于从此应用程序创建的某些 DLL,我没有出现此类错误。
当我不得不在 VFP 中构建 OLE/COM 服务器时,大多数时候它最终都是权限问题。即使是构建,您也必须启动 VFP "Run as Administrator" 以便它可以将条目写入 Windows 注册表。
然后出现错误 800004005。这也是基于权限(根据我的经验)。为此,我必须始终从 Windows 进入 COM 服务器配置。
从记住 32/64 位开始,您需要在 32 位模式下显式 运行 DCOM 配置。为此,从 DOS 命令 window,执行
MMC comexp.msc /32
这告诉 DCOM 配置显示基于 32 位的 COM 服务器(VFP 仅 运行s 在 32 位模式下)
然后,展开 Console Root -> Component Services -> Computers -> My Computer -> DCOM Config 的树视图控制器。然后向下滚动到您的应用程序。如果列表中未引用/显示 class 名称,您可能需要使用 GUID。右键单击它和 select 属性。在 "Identity" 选项卡上,您可以确定用于访问 COM 对象的帐户。只是为了测试和确认,将用户帐户设置为管理员级别帐户并尝试。一旦确认,您就知道它是否是权限访问。然后去掉admin,再放一个低级别的用户账号。当它失败时,您需要确保 "user" 对您的进程可能正在使用的任何路径具有足够的权限。
希望这会有所帮助,但同样,其中大部分是几年前用 VFP 做 COM 服务器的。