3

リモート サーバー上のサービスとして、小さな COM+ コンポーネントを使用しています。

以下を使用して、このコンポーネントのメソッドを実行しようとしています。

Type type = Type.GetTypeFromProgID("ComPlusTest.ComTestClass",serverName);

// Create Service
Object service = Activator.CreateInstance(type);

// Execute Method
String result = service.GetType().InvokeMember("LaunchPackage",
    BindingFlags.InvokeMethod, null, parameters, null).ToString();

型は null として返されます。

これを行う最良の方法は何ですか??

サーバーは Windows 2003 Enterprise で、サービスは COM+ としてラップされた .NET コンポーネントです (そのようにする必要がないことはわかっていますが、目的はレガシー アプリケーションを .NET コンポーネントに統合することです)。これは、.NET COM+ コンポーネントが機能することをテストするためのものです。

前もって感謝します!

4

2 に答える 2

1

問題を解決しました。COM+がサーバーに正しくインストールされていませんでした。.NETFramework構成コンソールでアセンブリを構成する手順を見逃しました。

手順は次のとおりです。

  1. .NET Framework構成コンソールにアセンブリを登録(アセンブリを構成)します
  2. アセンブリをGACに登録します
  3. コンポーネントサービスコンソールにCOM+アプリケーションを登録します。次に、コンポーネントを実際のアセンブリ(dll)に追加します

Jeje、私は最初のものを逃しました。

問題への回答に時間を割いていただき、ありがとうございます。

ありがとう!

于 2009-10-21T21:12:33.343 に答える
1

私はそれを試していませんが、あなたのアプローチは理にかなっています。これは、プロキシを使用しない相互運用と非常によく似ていますが、リモート サーバーを使用します。

他の問題 (構成や許可など) が発生している可能性がありますか?

トラブルシューティングの提案:

テスト プログラムを「リモート」サーバーで直接実行してみてください。

また、最初の行を次のように変更してみましたか:

Type type = Type.GetTypeFromProgID("ComPlusTest.ComTestClass",serverName, true);

エラーが発生した場合は例外がスローされ、発生している特定の問題に関する詳細情報が提供される場合があります。

于 2009-10-21T05:36:20.800 に答える