4

こんにちは、Web サービス経由で com DLL にアクセスする必要があるアプリを開発しています。

Win 7でIIS 7を実行しており、vs2010を使用して開発しています。

開発環境ではすべて正常に動作しますが、ローカルホストで IIS に公開してさらにテストを行ったところ、次のエラーが発生しました。

System.Runtime.InteropServices.COMException: CLSID {29345FBB-4DE7-4838-9464-5A886B775677} を持つコンポーネントの COM クラス ファクトリを取得できませんでした。次のエラーが原因です: 80040154。

これを調べたところ、アプリプールの設定を「32ビットアプリケーションを有効にする」に変更すると、trueになることがわかりました。これでエラーが回避されるので、これを実行したところ、次のエラーが発生しました。

タイプ 'ComName.ComClassClass' の COM オブジェクトをインターフェイス タイプ 'ComName._ComClass' にキャストできません。IID '{003B251B-6F4E-42A5-8111-11DB41F1D14A}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: No such interface supported (HRESULT からの例外: 0x80004002 (E_NOINTERFACE)) .

私はどこを見ればいいのか完全に迷っています。グーグルで検索しましたが、答えが見つからないようです。何が起こっているのか知っている人はいますか?

4

1 に答える 1

3

COMdllはIISサーバーに登録する必要があります。そのCOMdllをインストールするソフトウェアをインストールするか、zippy32.exe "C:..\yourdll.dll"を使用して手動でインストールします。


[ウィンドウタイトル]RegSvr32

[コンテンツ]

モジュールを登録するには、バイナリ名を指定する必要があります。

使用法:zippy32 [/ u] [/ s] [/ n] [/ i [:cmdline]] dllname

/u-サーバーの登録を解除します

/s-サイレント; メッセージボックスを表示しない

/ i-DllInstallを呼び出し、オプションの[cmdline]を渡します。/ uで使用すると、dllアンインストールが呼び出されます

/n-DllRegisterServerを呼び出さないでください。このオプションは/iとともに使用する必要があります


すでに登録されていると思われる場合は、登録を解除して再登録し、iisresetを実行してください:)

例(dllが直接C:\にあると仮定):

C:> zippy32.exe / u thecomdll.dll

C:> zippy32.exethecomdll.dll

于 2012-05-21T17:08:47.333 に答える