2

私は CLSID を持っており、これを別のサーバー (つまり DCS ) でインスタンス化する必要がありますが、私の作業マシンは (つまり MWS ) です。

さて、次を使用すると:

var type = Type.GetTypeFromCLSID(new Guid(CLSID),
       Environment.MachineName, true);
 var COMObject = Activator.CreateInstance(type);
 var returnValue = COMObject.GetType().InvokeMember(methodName,
                        flags, null, COMObject, args, argModifiers, null, null);

次に、「COM ターゲットは IDispatch を実装していません」というエラーが表示されます。わかりました。おそらく COM ターゲット オブジェクトに IDispatch がないため、失敗します。

VS でその COM DLL の参照を追加すると、VS は相互運用アセンブリを生成し、すべてが通常の .net オブジェクト作成のように機能しますが、その場合、オブジェクトは実際にはローカル マシンで生成されます (MWS pc) 私が望むものをサーバーに入れません。

どうすればこの状況に対処できますか?

前もって感謝します。

4

1 に答える 1

3

COM+ をターゲット マシンからプロキシとしてエクスポートし、アプリケーションを実行しているマシンにインストールできます。

ターゲット マシンのコンポーネント サービス コンソールに移動し、COM+ アプリケーションを右クリックして [エクスポート...] を選択し、[アプリケーション プロキシ] ラジオ ボタンを選択します。これにより、プロキシがその COM+ アプリケーションに MSI ファイルとしてエクスポートされます。実際の COM+ アプリケーションの代わりにマシンにインストールして (インストールされている場合は削除することを意味します)、相互運用を試す必要があります。

于 2010-11-05T13:33:37.463 に答える