2

我正在尝试运行 PowerBuilder 10.5.2 示例 Web 服务应用程序。我可以很好地打开工作区,我可以看到对象甚至运行应用程序,但是当我尝试调用服务时出现“错误的运行时函数引用”错误。

我相信我已经安装了所有必需的部件:

  • 铅 10.5.2
  • .Net 2.0 SDK

Web 搜索显示示例应用程序使用的一些 Web 服务已失效,但我无法想象所有这些 Web 服务都已失效,因此该错误似乎表明设置或对象存在问题,而不是第三方服务。

我可以在工作区列表和 Sybase 共享对象目录中看到 pbwsclient105.pbd。但是,作为测试,我尝试使用文档中列出的替代方法来设置 .Net Web 服务对象的 PB 代理(通过从 pbwsclient105.pbx 导入 PB 扩展)并得到一个“无效的 dll 错误”所以也许我的Web 服务库已损坏?

还能缺少什么?路径设置?.Net 2.0 SDK 安装不正确?

4

1 回答 1

2

* * * 编辑:问题已解决 - 至少在我的机器上 * * *

我从我在这里找到的线程中得到了提示,并开始检查发生这些错误时 PowerBuilder 发生了什么——无论是在导入 PBX 期间,还是在执行示例应用程序的运行时期间。

线程中的一个人提到这个问题与libeay32.dllssleay32.dll有关。这不是 OpenSSL 第一次让我适应这些组件——我的硬盘驱动器在各种应用程序文件夹中散落着它们。这些 DLL 在导入 PBWSCLIENT105.PBX 扩展时由 PB 加载,或者由在运行时使用关联的 PBD 的应用程序加载。果然,通过使用ProcMon,我能够确认libeay32.dllssleay32.dll是从Windows\System32加载的,而不是位于 PB 文件夹结构中的相同 DLL 的版本。显然,这是一个问题。我重命名了位于System32中的两个 DLL为了有效地删除它们,启动了 PB,导入 PBWSCLIENT105.PBX 就像一个魅力。


我们的 PB 10.5 安装也有类似的问题。导入 PBX 文件给了我错误消息:

---------- Import PB Extension:
Importing C:\Program Files\Sybase\Shared\PowerBuilder\pbwsclient105.pbx - Error: The file is not a valid dll or pbx file.
---------- Finished

我最初认为问题是文件损坏等。但是,我在一台干净的机器(实际上是一个 VM)上安装了 PB 10.5 以及 .Net 2.0 SDK,并且导入工作完美无缺;另外,我可以调用网络服务。我小组中的每个开发人员在他们自己的机器上都有同样的问题,但如果他们使用“干净”的机器或安装了 PB 的 VM(可能还有一些其他应用程序),则 PBX 文件的导入没有问题。

在这一点上,我试图确定环境中导致问题的原因,但还没有。正如您所指出的,有趣的是,如果您打开示例应用程序,您可以看到完全相同的导入库。但是,您会在运行时收到错误消息。所有这一切都真正指向了一些环境缺失或错误注册的东西。因此,如果您有能力使用 VM,我建议您将其作为临时解决方法。

我将在此处添加一件事:如果您碰巧使用 Vista 或 Windows 7 作为您的 VM,则库的导入工作正常,但我在使用 .Net Web 服务引擎生成客户端代理时遇到了问题。我终于发现,在后台,SDK 工具 WSDL.exe 正在针对服务的 WSDL 执行,以生成 .Net 客户端代理。结果是 Vista/Win7 用户访问控制阻止了 WSDL.EXE 运行。我以“管理员”身份运行 PowerBuilder,就生成客户端代理而言,一切都按预期工作。

如果您发现任何有关 PBX 导入不起作用的原因,我很想听听!

于 2009-12-16T21:15:45.747 回答