3

FileNet イメージング システムにアクセスするために COM オブジェクトを呼び出す C# Web サービスがあります。FileNet COM オブジェクトを呼び出すときに、サービスで次のエラーが発生することがあります。

System.Runtime.InteropServices.COMException (0x80040005): この操作を実行するには、オブジェクトを実行する必要があります (HRESULT からの例外: 0x80040005 (OLE_E_NOTRUNNING))

これが何を意味するのか、またはトラブルシューティング方法について何か考えはありますか? Google で検索してもほとんど何も見つかりませんでした。また、COM の経験は非常に限られています。ありがとう。

4

2 に答える 2

2

残念ながら、その HRESULT は "問題が発生しました" エラー コードです。私は提案します:

  1. システムとアプリケーションのイベント ログをチェックして、より適切なエラー メッセージが記録されているかどうかを確認します。
  2. COM コンポーネントのアプリケーション固有のエラー ログを確認します。

どちらの方法でも問題の原因が明らかにならない場合は、COM アセンブリをコンポーネント サービス パッケージに追加することを検討してください。これにより、システムを再起動することなく、シャットダウンして再起動するのがはるかに簡単になります。

OS によって異なります (これは Windows 7 のものですが、ほとんどは似ています)。

  1. コンポーネント サービスを開始します (通常は管理ツールの下にあります)。
  2. コンポーネント サービス、コンピューター、マイ コンピューター、COM+ アプリケーションにドリルダウンします。
  3. 右クリックして新しいアプリケーションを追加します。
  4. 空のアプリケーションを作成することを選択します。これにより、ここで実行する COM コンポーネントを選択できます。
  5. アプリケーションに名前を付ける
  6. COM コンポーネントについてよく知らない場合は、サーバー アプリケーションを選択して開始することをお勧めします。これにより、呼び出し元のプロセス外で開始されます。これが機能しない場合 (呼び出しが失敗するなど)、このアプリケーションを削除し、ライブラリ アプリケーションとして再試行してください。
  7. サービスの資格情報を選択します。Network Service はおそらく最も安全な選択 (アクセス許可が最も少ないなど) ですが、要件が何であるかはわかりません。ハードウェアなどにアクセスしている場合は、ドメイン アカウントまたは LocalSystem を指定する必要がある場合があります。
  8. ウィザードを終了します (詳細な制御が必要な場合は、これらに再度アクセスする必要がある場合があります)。
  9. 新しいアプリケーションにドリルダウンし、Components フォルダーを見つけます。
  10. 右クリックして [新しいコンポーネント] を選択します
  11. COM コントロールが既に登録されている場合は、[コンポーネントのインポート] を選択します。そうでない場合は、コンポーネントのインストールを選択します
  12. 気になるコンポーネントを選択します。相互に関連するすべてのコンポーネントを同じアプリケーションに組み込むことが非常に重要であることに注意してください。そうしないと、古い COM アセンブリが正しく動作しない可能性があります
  13. ウィザードを終了します。ツリー ビューの COM+ アプリケーション レベルに戻ると、新しいアプリケーションがアニメーション化されていないアイコンで表示されます。

呼び出し元のコードを変更する必要はありません。サービスにリクエストを送信し、マネージャに戻ります。COM+ アプリケーションが起動すると、アイコンがアニメーション表示されます。必要に応じて、ここから再起動することもできます。

スピンダウン時間とプーリングに関する多くの構成オプションがあるため、たとえば、COM DLL が特定の期間後にのみ問題を引き起こすことがわかった場合に役立ちます。

于 2010-02-26T11:23:24.370 に答える
0

問題が本当に断続的で、1 台のマシンで発生する場合と発生しない場合がある場合は、コードを記述してエラーをトラップし、再試行することができます。

動作しないマシンがある場合は、UAC などの他の問題、またはコンポーネントが正しくインストールされていないことが原因である可能性があります。

于 2010-02-25T00:01:01.023 に答える