2

この問題は私を夢中にさせています。COM .dll (SysWOW64 にあります) を使用していくつかの操作を行う WCF サービスがあります。Windows 2008 R2 に登録しましたが、サービスがサーバーにデプロイされていると機能しません。私のサービスは「任意の cpu」用にコンパイルされています。

コンソール アプリケーションを作成すると、正常に動作します。私は何を間違っていますか?許可の問題ですか?app-pool ユーザーを管理者に変更しましたが、どちらも機能しません。プールを 32 ビット アプリケーションに変更しようとすると、プールがクラッシュするか、サービスがタイムアウトします。

エラーメッセージは次のとおりです。

System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {47E736CA-3EEA-11D5-8400-00A0C9CA15AD} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

4

これは、COM DLL が 32 ビットであるためです。SysWOW64 は、64 ビット Windows 上の 32 ビット コンポーネント用です。コンソール アプリケーションは x86 としてビルドされているため (プロジェクトのプロパティを確認してください)、動作しますが、IIS アプリケーション プールは 64 ビットです。

IIS で新しいアプリ プールを作成する必要があります。[True ] に移動しAdvanced Propertiesて設定します。Enable 32-Bit Applicationsこれにより、32 ビット アプリ プールが作成され、COM dll が検出されます。

于 2011-08-13T16:31:07.063 に答える