Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling a COM+ Component remotely using C#

Tags:

.net

com+

I have a little COM+ component as a service on a remote server.

I´m trying to execute a method of this component using:

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();

The type is returned as null.

What is the best way to do this??

The server is Windows 2003 Enterprise, the service is a .NET component wraped as COM+ (I know that I don´t have to do it that way, but the purpose is to itegrate a legacy App with a .NET component) The purpose of this is just to test that the .NET COM+ Component works.

Thanks in advance!

like image 448
Arturo Caballero Avatar asked Dec 29 '25 15:12

Arturo Caballero


2 Answers

I haven't tried it, but your approach makes sense. It looks very similar to the Interoperating without Proxies but with a remote server.

Perhaps you are running into some other issue (e.g. configuration or permission)?

Some troubleshooting suggestions:

Try to run your test program directly on the "remote" server.

Also, have you tried changing your first line to:

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

This should throw an exception if an error is encountered and may provide you with some more information on the specific issue you are hitting.

like image 144
Randy supports Monica Avatar answered Jan 01 '26 06:01

Randy supports Monica


I have solved the issue. The COM+ was not correctly installed on the server. I missed the step of configure the assembly in the .NET Framework Configuration Console.

The steps are:

  1. Register the assembly (configure assembly) on .NET Framework Configuration Console
  2. Register the assembly in the GAC
  3. register the COM+ Application in the Component Services Console. Then Add the Component to the actual assembly(dll)

Jeje, I missed the first one.

How ever I appreciate your time on answering the issue.

Thanks!

like image 38
Arturo Caballero Avatar answered Jan 01 '26 07:01

Arturo Caballero



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!