1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

COM-Registered .NET Class Intermittently Reported as not Registered Properly

Discussão em 'StackOverflow' iniciado por fdantas, Julho 25, 2018.

  1. fdantas

    fdantas Administrator Moderador

    We have a legacy OpenEdge 10.1C application that needs to call a WCF netTcp service. Since the only means of interoperability available in OpenEdge 10.1C is COM, I created a client that wraps the use of a ChannelFactory to create a WCF service client, and then allows the OpenEdge application to make multiple calls to the service using the same instance of the COM object.

    This worked fine throughout all of our development and testing cycles, but in our Production environment, we see the following error about 1.4% of the time

    The automation server for The.COM.WCF.Client is not registered properly.
    Please reinstall this server or try registering it again. (5893)


    This error is occurring on an OpenEdge AppServer worker process, and once that worker encounters the error, it gets the error every time it tries to use that COM object. However, if the worker process is trimmed (terminated) and a new process starts up on the same server, it will very likely work fine.

    Has anyone experienced intermittent errors with COM objects like this? The .NET class was registered with regasm and the class has the following attributes:

    [<Guid("c7e8dd5a-bc01-4a45-85a2-6aa7f9535b47")>]
    [<ClassInterface(ClassInterfaceType.None)>]
    [<ComSourceInterfaces(typeof<IWcfClient>)>]


    The OpenEdge class that's using the client looks something like this (I'm no OpenEdge expert, but it seems ok to me):

    USING Progress.Lang.*.

    CLASS WcfClient:

    DEFINE PUBLIC PROPERTY ClientObject AS COM-HANDLE NO-UNDO
    GET.
    PRIVATE SET.

    CONSTRUCTOR PUBLIC WcfClient (INPUT ipcConnectionString AS CHARACTER):
    IF ipcConnectionString > "" THEN
    DO:
    CREATE VALUE("The.COM.WCF.Client") ClientObject.
    ClientObject:Init(ipcConnectionString).
    END.
    END CONSTRUCTOR.

    DESTRUCTOR PUBLIC WcfClient():
    NO-RETURN-VALUE ClientObject:Close() NO-ERROR.
    RELEASE OBJECT ClientObject NO-ERROR.
    ASSIGN ClientObject = ?.
    END DESTRUCTOR.

    END CLASS.


    I haven't been able to reproduce the behavior in a non-production environment, even with hundreds of thousands of messages, so I suspect it is more related to the registration or the operating system configuration than the code, but I welcome any suggestions on how to troubleshoot this error.

    Continue reading...

Compartilhe esta Página