2016-07-15 8 views
1

現在Visual FoxProで作成された既存のアプリケーションのWebサービスを作成する必要があります。私は、クラスライブラリのDLLをコンパイルするDLLからWSDLを生成しますが、SOAPUIからWSDLを使用して、このDLLを呼び出すと、私は次のエラーできますすることができますVisual FoxProで作成したDLLをインスタンス化できません

Instantiating the dispatch object for method companyadd failed

また、私はOLE/COMビューアでこのDLLを開くことができませんが。次のエラーが表示されます。IClassFactory::CreateInstance failed Unspecified error E_FAIL($800004005)

問題の原因を解明する方法を誰かに教えていただけますか?

このアプリケーションで作成されたDLLには、このようなエラーはありません。

答えて

0

私はVFPでOLE/COMサーバーを構築する必要がありましたが、ほとんどの場合、権限が終了しました。構築する場合でも、Windowsレジストリにエントリを書き込むために、VFPを「管理者として実行」する必要があります。

その後、エラー800004005が発生します。これも(私の経験では)権限に基づいています。そのためには、Windowsから常にCOM Serverの設定を行う必要がありました。

32/64ビットを記憶することから、DCOM構成を32ビットモードで明示的に実行する必要があります。 DOSコマンドウィンドウから、そうするように、

MMC comexp.msc /32 

を行うこれは、32ビットベースのCOMサーバーを表示するようにDCOMの設定を指示する(VFPは、32ビットモードで実行されます)

その後、拡大コンソールルート - >コンポーネントサービス - >コンピュータ - >マイコンピュータ - > DCOM Configのツリービューコントローラ。次にアプリケーションにスクロールします。クラス名がリストで参照/表示されない場合は、GUIDを使用する必要があります。それを右クリックしてプロパティを選択します。 [ID]タブでは、COMオブジェクトへのアクセスに使用するアカウントを指定できます。テストと確認のために、ユーザーアカウントを管理者レベルのアカウントに設定し、試してみてください。それが確認されると、アクセス権の有無を知ることができます。その後、adminを削除し、別の下位レベルのユーザーアカウントを追加します。それが失敗した場合は、 "ユーザー"がプロセスで使用されている可能性のあるパスに対して適切な権限を持っていることを確認する必要があります。

これはうまくいけばよいことですが、これはほとんどがVFPを使用してCOMサーバーをやっていた頃からのものでした。

関連する問題