Hello,

I am new to this list. I am getting an exception when I'm running a method
with enumerated parameters in COM+. I can't figure it out for the life of
me, and any assistance you can provide would be greatly appreciated.

I created a .NET class in C# that interops with COM and is also installed as
a COM+ SERVER package. The problem is when I have an enumerated type as a
parameter in a method of my class. Both the .NET class and client compile.
And I can instantiate the object no problem, but as soon as I run a method
with an enumerated type as a parameter I get the following exception:
------------
File or assembly name MyComPlusServer, or one of its dependencies, was not
found.
  at
System.EnterpriseServices.IRemoteDispatch.RemoteDispatchNotAutoDone(String
s)
  at System.EnterpriseServices.RemoteServicedComponentProxy.Invoke(IMessage
reqMsg)
  at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)
  at MyComPlusServer.MyComPlusServerClass.DoSomething(CarTypes eMyCar) in
d:\visual studio projects\mycomplusserver\class1.cs:line 28
  at MyComPlusClient.Form1.button1_Click(Object sender, EventArgs e) in
d:\visual studio projects\mycomplusclient\form1.cs:line 106
------------

Everything compiles fine, and I can install the server into COM+ (using
regsvcs) no problem. This works wonderfully from a VB6 client. It also works
when the .NET class is installed as a COM+ library application, instead of a
server application.

Thanks again,
-Kuthair


Here is some sample code:

=========================================
My .NET server class
=========================================
[assembly: AssemblyKeyFile("mysnk.snk")]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationID("E6F3F75B-9957-4bc9-BA00-ACAD8D7941A6")]
[assembly: ApplicationName("MyComPlusServer")]
[assembly: Description("Doesn't do much")]


using System;
using System.Runtime.InteropServices;
using System.EnterpriseServices;

namespace MyComPlusServer
{
   [Guid("E04A86A4-883E-4f7d-B4FA-A6A1061DFD72")]
   // Support both early and late-bound calls from an unmanaged client
   [ClassInterface(ClassInterfaceType.AutoDual)]
   // Enable ObjectPooling with these defaults
   [ObjectPooling(true, 4, 12, CreationTimeout = 20000)]
   // Enable JIT activation
   [JustInTimeActivation(true)]
   // Enable statistics
   [EventTrackingEnabled(true)]
   public class MyComPlusServerClass : ServicedComponent
   {
       public enum CarTypes : byte { Ford = 0, Chevy = 22, Chrysler = 5, VW
= 99}

       public MyComPlusServerClass()
       {
       }

       public int DoSomething(CarTypes eMyCar)
       {
           // do somework
           return 100;
       }
   }
}

=========================================
My .NET client
=========================================

       private void button1_Click(object sender, System.EventArgs e)
       {
           try
           {
               MyComPlusServer.MyComPlusServerClass objServerClass = new
MyComPlusServer.MyComPlusServerClass();


objServerClass.DoSomething(MyComPlusServer.MyComPlusServerClass.CarTypes.VW);

           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message + System.Environment.NewLine +
ex.StackTrace);
           }
       }

=========================================


_________________________________________________________________
Choose an Internet access plan right for you -- try MSN!
http://resourcecenter.msn.com/access/plans/default.asp

You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to