2

PowerBuilder 10.5.2 サンプル Web サービス アプリケーションを実行しようとしています。ワークスペースを問題なく開くことができ、オブジェクトを表示してアプリを実行することもできますが、サービスを呼び出そうとすると「ランタイム関数の参照が正しくありません」というエラーが表示されます。

必要な部品をすべてインストールしたと思います。

  • PB 10.5.2
  • .Net 2.0 SDK

Web を検索すると、サンプル アプリで使用されている Web サービスの一部が機能していないことがわかりますが、すべてが機能しているとは思えないため、エラーはサード パーティのサービスではなく、セットアップまたはオブジェクトの問題を示しているようです。

ワークスペース リストと Sybase 共有オブジェクト ディレクトリに pbwsclient105.pbd が表示されます。ただし、テストとして、PB プロキシを .Net Web サービス オブジェクトに設定するためにリストされているドキュメントに記載されている代替方法を使用しようとしました (pbwsclient105.pbx から PB 拡張機能をインポートすることにより)。 Web サービス ライブラリが破損していますか?

他に何が欠けている可能性がありますか?パス設定?.Net 2.0 SDK のインストールが間違っていますか?

4

1 に答える 1

2

* * * 編集: 問題は解決しました - 少なくとも私のマシンでは * * *

ここで見つけたスレッドから手がかりを得て、PBX のインポート中と、サンプル アプリケーションを実行した場合のランタイム中の両方で、これらのエラーが発生したときに PowerBuilder で何が起こっていたのかを調べ始めました。

スレッドの 1 人が、この問題はlibeay32.dllssleay32.dllに関連していると述べました。OpenSSL がこれらのコンポーネントに適合するようになったのはこれが初めてではありません。私のハード ドライブには、さまざまなアプリケーション フォルダにそれらが散らばっています。これらの DLL は、PBWSCLIENT105.PBX 拡張機能がインポートされるときに PB によって読み込まれるか、実行時に関連付けられた PBD を使用するアプリによって読み込まれます。案の定、ProcMonを使用して、 libeay32.dllssleay32.dllが、PB フォルダー構造にある同じ DLL のバージョンではなく、Windows\System32から読み込まれていることを確認できました。どうやら、これは問題です。System32にある 2 つの 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

私は当初、問題はファイルが破損していることなどだと考えていました。しかし、PB 10.5 をクリーンなマシン (実際には VM) に .Net 2.0 SDK と共にインストールすると、インポートは問題なく動作しました。また、Web サービスを呼び出すこともできました。私のグループのすべての開発者は、自分のマシンで同じ問題を抱えていますが、「クリーンな」マシンまたは PB がインストールされた VM (およびおそらく他のいくつかのアプリ) を使用している場合、PBX ファイルのインポートは問題なく機能します。

この時点で、環境内で問題の原因を突き止めようとしていますが、まだできていません。興味深いのは、お気づきのように、サンプル アプリケーションを開くと、まったく同じインポートされたライブラリが存在することです。ただし、実行時にエラーが発生します。これらはすべて、環境的に何かが欠けているか、正しく登録されていないことを示しています。そのため、VM を使用できる場合は、一時的な回避策としてそれをお勧めします。

ここで 1 つ追加します。Vista または Windows 7 を VM として使用している場合、ライブラリのインポートは正常に機能しますが、.Net Web サービス エンジンを使用してクライアント側プロキシを生成する際に問題が発生しました。最後に、.Net クライアント側プロキシを生成するために、サービスの WSDL に対して SDK ツール WSDL.exe がバックグラウンドで実行されていることを発見しました。Vista/Win7 の User Access Control が WSDL.EXE の実行を妨げていたことが判明しました。PowerBuilder を「管理者として」実行したところ、クライアント側プロキシの生成に関して、すべてが期待どおりに機能しました。

PBX のインポートが機能しない理由について何か発見された場合は、ぜひお知らせください。

于 2009-12-16T21:15:45.747 に答える