.NET3.0と同じ方法で構築された2つのCOMDLLがあります。1つはデータベースからデータをフェッチし、もう1つはWebサービスからデータをフェッチします。
次のコマンドでRegAsm.exeを使用してDLLを常に登録しています。
cd "C:\Program Files\Dispatcher\COM\Custom"
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe MercatorRepositoryCOM.dll /tlb:MercatorRepositoryCOM.tlb /codebase
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe MercatorUtilitiesCOM.dll /tlb:MercatorUtilitiesCOM.tlb /codebase
これはほとんどのサーバーで機能します(Win2008R2 32b)
最新のサーバーでは、出力には次のように表示されます。正常に登録されました。ただし、アプリケーションはMercatorUtilitiesCOM.dllにアクセスできますが、MercatorRepositoryCOM.dllにはアクセスできません。
RegAsm、zippy32、regtlibv12を使用してDLLを登録し、さらにそれらをGACに追加してみました。何も機能しません。
「(10092)ActiveX自動化:サーバーはオブジェクトを作成できません。」よりもうまくトラブルシューティングできる方法はありますか?これらのDLLを登録する他の方法はありますか?
DLLコードにログを追加しようとしましたが、ログが書き込まれないため、DLLが呼び出されていないと想定できます。
PS:これらを参照する必要があるVB6に基づくスキャン/インデックス作成アプリケーションがあるため、これらをCOMDLLとして公開する以外に選択肢はありません。それはディスパッチャーです(それを知っているかもしれない人のために)。
更新:さらに調査したところ、DLLが正しく登録されているようです。登録を解除すると、DispatcherがDLL参照を見つけられないという明確なメッセージが表示されます。登録すると、Dispatcherが開き、ActiveXAutomationエラーがスローされます。したがって、DLLは正しく登録されているようですが、何らかの理由でDLL内でクラスをインスタンス化できません。
解決策:結局のところ、この問題はDLL登録とは関係ありませんでした。どうやら、Dispatcherを起動するアプリケーションにいくつかの内部変更があったようです。以前はサブプロセスを生成して同じapp.configを使用できるようにしましたが、別のプロセス(独自の実行可能ファイル)として実行するように変更しました。これは、app.configで構成とエンドポイントが見つからなかったことを意味します。新しい実行可能ファイル用に別のapp.configを作成し、それが機能します。ご協力ありがとうございます!